2012. 3. 23. 13:06
손쉽게 File을 나열할 수 있는 class 공유(FindFirstFile/FindNextFile Wrapper)
2012. 3. 23. 13:06 in 프로그래밍/Let's Share it
파일 나열을 위해 FindFirstFile / FindNextFile을 사용하는데,
보통 SubDirectory를 지원하기 위해선 재귀호출을 사용해야 합니다.
그러다보면 자연히 코드가 좀더 너저분해 지는 경향이 있습니다.
그리고, Path의 Component(즉, \...\ 사이에 있는 길이)가 MAX_PATH를 넘어가면 발생하는 문제 해결을 위해,
Naming a file(\\?\를 붙이기)이 필요합니다. 해당 부분도 역시 지원합니다.
다음 code(class)만 추가하면 됩니다.
즉, CFileTraverse를 상속하고,
virtual BOOL OnTraverse(IN LPCTSTR lpszFullPath, IN LPCTSTR lpszNamedPath, IN PWIN32_FIND_DATA pstFD);
만 재정의 하시면 됩니다.
Enum을 중단하려면 FALSE를 리턴하면 됩니다.
위와 같이 class를 정의하고,
와 같이 호출하면, C:\ 하부에 있는 파일을 아래와 같이 나열(_tprintf)합니다.
... [0x20] C:\eclipse\configuration\org.eclipse.osgi\bundles\321\1\.cp\icons\full\dl cl16\localtypes_co.gif [0x20] C:\eclipse\configuration\org.eclipse.osgi\bundles\321\1\.cp\icons\full\dl cl16\public_co.gif [0x20] C:\eclipse\configuration\org.eclipse.osgi\bundles\321\1\.cp\icons\full\dl cl16\static_co.gif [0x10] C:\eclipse\configuration\org.eclipse.osgi\bundles\321\1\.cp\icons\full\dt ool16 [0x20] C:\eclipse\configuration\org.eclipse.osgi\bundles\321\1\.cp\icons\full\dt ool16\mark_occurrences.gif ... |
'프로그래밍 > Let's Share it' 카테고리의 다른 글
PE 포맷 바이너리 파일의 버전을 구하는 함수 (0) | 2012.04.30 |
---|---|
프로세스 생성 종결자 (ShellExecute / CreateProcess) (0) | 2012.03.23 |
VC9.0에서 crypto++ library를 이용하여 SHA256(sha2) 구하기 (8) | 2011.12.14 |
비동기(OVERLAPPED I/O, IOCP, Thread Pool) IPC PIPE Class 공유 (0) | 2011.12.14 |
[ATL/MFC/C++] Ini Parser(ini 파서) (0) | 2011.11.30 |