반응형
MFC, 파일 크기 알아보는 함수 StrFormatByteSize()
이 예제의 StrFormatByteSize() 함수는 shlwapi 클래스를 기반으로 합니다. 이 클래스는 윈도우 Visual C++에서 파일 경로를 탐색하여 폴더, 파일의 존재 여부나 생성 삭제 등을 비롯한 전반적인 사항을 알아볼 수 있도록 지원합니다. 파일과 폴더의 상세 정보도 알아낼 수 있기에 파일 탐색 기능이 필요할 때 유용하게 사용할 수 있습니다.
MFC, 파일 크기 알아보는 함수 StrFormatByteSize()
아래 예제 코드는 shlwapi 클래스가 지원하는 일부 기능을 이용해 파일 크기를 리턴합니다. MSDN에서는 영어로 된 문서만 제공하는 데, anysoft의 어느 회원분이 번역을 해주셨습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <Windows.h> #include <shlwapi.h> // 해더 추가 #pragma comment(lib,"shlwapi.lib") // 라이브러리 추가 int main() { WIN32_FIND_DATA fi; FindFirstFile("data2.cab",&fi); // 사이즈를 확인할 파일 이름 // 파일 사이즈 얻어오기 DWORD LocalFilesize = fi.nFileSizeHigh + fi.nFileSizeLow; TCHAR szBuffer[32] = ""; // 파일 사이즈 보기 쉽게 변환 StrFormatByteSize( LocalFilesize, szBuffer, 32 ); printf("%d\n", LocalFilesize); // 변환 전 사이즈 printf("%s\n", szBuffer); // 변환 후 사이즈 return 0; } | cs |
KB, MB, GB 등으로 파일 크기 값을 리턴해 줍니다.
유의 사항
1. 비주얼 스튜디오 6.0에선 지원되지 않음. (6.0 그만 쓰세요, 쓸 수는 있으나 귀찮음)
2. 32비트 OS에선 4기가 이상을 읽을 수 없음. (Integer 범위를 넘어섬)
3. 64비트 OS에선 StrFormatByteSize64A()로 사용
MFC, 파일 크기 알아보는 함수 StrFormatByteSize()
반응형