Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- promise
- 몽고db
- 타이젠
- 파싱
- es6
- 서블릿
- MongoDB
- JavaScript
- 크롬확장
- Native
- Servlet
- string
- CentOS
- EC2
- EventDrivenThread
- electron
- array
- 설치
- jQuery
- 세미콜론
- ;
- chrome extension
- JSON
- map
- Tizen
- cygwin
- 클로저
- CSS
- arrow
- SDK
- Today
- 14
- Total
- 88,041
KnP House for Daily
[Tizen Native App] CSV파일 Read (읽어오기) 본문
오늘은 기본적인 CSV 파일 읽어오는 방법에 대해 알아보쟈.
C++ 기반인 Native App은 기존의 C++이 read하는 방법 대로 해도 무방 하나,
C++ std::string 과 Tizen::Base::String은 형식이 달라 귀찮은 과정이 포함되고
C++ 라이브러리를 추가해야 하기 때문에 번거롭다.
그래서 Tizen 에 맞게 Read를 해보쟈
1. File 불러오기
File file; String filePath = App::GetInstance()->GetAppRootPath() + L"data/stationlist.csv"; result r = file.Construct(filePath, "r"); FileAttributes att; r = File::GetAttributes(filePath, att); long long size = att.GetFileSize(); ByteBuffer buf; r = buf.Construct(size + 1); r = file.Read(buf); String str; str += (char*)buf.GetPointer();
File class를 이용하여 data 폴더에 넣어논 csv 파일을 읽어들여, ByteBuffer에 Read를 시킨다.
파일 경로는 다른 곳에 두었다면 변경하면 된다.
ByteBuffer는 String으로 변경해야 하므로, char* 형의 캐스팅을 하여 변경 하면된다.
2. Tokenizing
이제 String에 담겨져 있는 csv 내용들을 라인단위로 자르고, ',' (콤마) 단위로 잘라서 원하는 값을 취하는 마지막 단계이다.
String token = "\n"; String token2 = ","; StringTokenizer strTok(str,token); String tokStr; while(strTok.HasMoreTokens()){ strTok.GetNextToken(tokStr); StringTokenizer strTok2(tokStr,token2); int itemNum = 0; String stationInfrom; while(strTok2.HasMoreTokens()){ itemNum++; strTok2.GetNextToken(stationInfrom); if(itemNum == 1){ busNameList->Add(stationInfrom); }else if(itemNum == 2){ busNumList->Add(stationInfrom); itemNum=0; } } }
CSV는 라인단위와 콤마단위로 구분 되어져 있기 때문에, String으로 지정을 해놓은 다음
처음에는 라인단위로 잘라야 하기 때문에 Utiltly 에 있는 StringTokenizer 를 이용하여 지정하고,
HasMoreTokens() 로 계속 진행 할 것이 있는지 체크하며,
GetNextToken()으로 라인단위로 잘라가며 String에 결과값을 넣어준다.
그리고 , 한 라인을 잘라냈으면, 이번엔 StringTokenizer 로 콤마 단위로 잘라 준다.
위와같은 작업을 반복하며, 라인 단위 -> 콤마단위 작업을 끝날때까지 진행한다.
itemNum으로 콤마로 잘랐을때 인덱스값을 지정하여 원하는 값을 추출 할 수 있다.
'Tizen > Tizen project' 카테고리의 다른 글
[Tizen Native App] CSV파일 Read (읽어오기) (0) | 2014.06.09 |
---|---|
[Tizen Native App] ListView CreateItem 관련.. (0) | 2014.06.08 |
Tizen Native App - 서울버스 정류장 파싱 문제 (1) | 2014.06.04 |
0 Comments