본문 바로가기
IT-개발,DB

[개발/MFC] 파일크기 구하기 (대용량 파일크기도 가능)

by SB리치퍼슨 2012. 1. 30.

// 파일크기 구하기 (2G이상도 구함)
HANDLE   hFile;
hFile = ::CreateFile(FilePath, 0, 0 , NULL, OPEN_EXISTING, 0, NULL);
PLARGE_INTEGER pLint;
if (INVALID_FILE_SIZE != ::GetFileSizeEx(hFile, pLint))
{
// 64bit
pLint->QuadPart;
// 32bit
pLint->LowPart;
}

출처: http://msdn.microsoft.com/en-us/library/aa383713(VS.85).aspx
 
* LARGE_INTEGER Union

멤버 설명은 다음과 같습니다. 64bit는 QuadPart를 사용하고 32bit는 나머지를 사용합니다.

Members
LowPart
Low-order 32 bits.

HighPart
High-order 32 bits.

u
LowPart
Low-order 32 bits.

HighPart
High-order 32 bits.

QuadPart
Signed 64-bit integer.


그래서 이렇게 사용하면 되겠습니다.

PLARGE_INTEGER pLargeInteger;
HANDLE   hFile;
hFile = ::CreateFile(FilePath, 0, 0 , NULL, OPEN_EXISTING, 0, NULL);
if ( INVALID_FILE_SIZE != ::GetFileSizeEx(hFile, pLargeInteger) )
{
   // 64bit인 경우
    printf("64bit file size = %d\n", pLargeInteger.QuadPart );

   // 32bit인 경우
    printf("32bit file size = %d\n", pLargeInteger.LowPart );
}


파일 관련 함수 링크

File Management Functions
http://msdn.microsoft.com/en-us/library/aa364232(VS.85).aspx

- GetFileSize()
http://msdn.microsoft.com/en-us/library/aa364955(VS.85).aspx

- GetFileSizeEx()
http://msdn.microsoft.com/en-us/library/aa364957(VS.85).aspx



반응형

댓글