삽질 – 001 :: 파일오픈은 정상인데 이상하게 파일이 않읽어질때

오늘은 삽질

간단한 파일입력코드를 만드는중에 파일 사이즈를 알아야 할일이 있었다. 그래서 간단하게 오프셋을 ifstream::beg(파일의 처음)의 값과 ifstream::end(파일의 마지막) 값의 차이로 크기를 구하고 나서 파일전체를 메모리에 올리는 코드를 짰다.

근데 실제로 돌려보니 파일의 내용을 전혀 읽지 못하는것이다. 디버거로 값을 확인해 보니 read 함수를 호출하는것 까지도 전혀 문제가 없는데 파일의 내용자체는 전혀 가져오지 못하는것… 코드는

[CODE]file.seekg(0, ifstream::beg );
ifstream::pos_type startPos = file.tellg();
file.seekg(0, ifstream::end );
ifstream::pos_type lastPos = file.tellg();
m_nFilesize = (int)(lastPos-startPos);[/CODE]

문제가 된 코드는 요렇게 생겼었는데…
한시간 동안(….T_T) 살펴본 결과 file.seekg(0, ifstream::end ); 요 코드에서 파일 오프셋을 마지막으로 옮겨버려서 정작 read를 호출했을 때는 읽을 데이타가 없었던것…
코드를

[CODE]file.seekg(0, ifstream::end );
ifstream::pos_type lastPos = file.tellg();
file.seekg(0, ifstream::beg );
ifstream::pos_type startPos = file.tellg();
m_nFilesize = (int)(lastPos-startPos);[/CODE]

으로 수정해서 다시 파일의 처음으로 오프셋이 오게 해주니 해결….

후….삽질도 데이타베이스화 할 필요성을 느낀다.

ps.
사실 “파일오픈은 정상인데 이상하게 파일이 않읽어질때” 의 진정한 삽질의 상황이라면
“알고보니 파일에 내용이 하나도 없을때” 가 아닐까…

“삽질 – 001 :: 파일오픈은 정상인데 이상하게 파일이 않읽어질때”에 대한 한개의 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다