본문 바로가기
C++ 200제/코딩 IT 정보

MFC, 파일 크기 알아보는 함수 StrFormatByteSize()

by vicddory 2018. 2. 28.

MFC, 파일 크기 알아보는 함수 StrFormatByteSize()


이 예제의 StrFormatByteSize() 함수는 shlwapi 클래스를 기반으로 합니다. 이 클래스는 윈도우 Visual C++에서 파일 경로를 탐색하여 폴더, 파일의 존재 여부나 생성 삭제 등을 비롯한 전반적인 사항을 알아볼 수 있도록 지원합니다. 파일과 폴더의 상세 정보도 알아낼 수 있기에 파일 탐색 기능이 필요할 때 유용하게 사용할 수 있습니다.


MFC, 파일 크기 알아보는 함수 StrFormatByteSize()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()

댓글