힘들면 쉬었다 가자.
2G 이상 되는 파일의 파일사이즈 구하기 본문
회사에서 usb도 안되고 메신저도 안되고 뭐,,
어지간한건 다 막아놨습니다.
업무적으로든 비업무적으로든 가끔 파일을 주고 받을 경우가 있어서
그냥 쪼그만 프로그램 만들어서 파일 옮기고 그럽니다.
근데, 언젠가 좀 큰 파일을 옮길라고 하니깐
이게 안되네요,,
문제가 뭐지??
하고 봤더니 파일 크기가 2G가 넘어가면 파일 사이즈를 구하지 못하더군요,,
문제의 원인은 파일 사이즈를 fseek, ftell을 이용해서 계산을 했는데
리턴 타입이 long형이라서 그랬던 것 같습니다.
인터넷에 뒤져보니 뭐,, 금방 답 나오네요
일단 오늘의 테스트 파일
-1을 리턴해 주네요,,
GetFileSize 함수를 이용하면 2G 넘어가는 파일의 사이즈도 정확하게 구할 수 있습니다.
참고로 C표준함수는 아닙니다..
윈도우즈 환경에서만 사용 가능
msdn : http://msdn.microsoft.com/en-us/library/aa364955(VS.85).aspx
결과는 아래와 같습니다.
뭐,, 콤마가 없어서 보기는 좀 그렇지만,,
어쨌든 사이즈는 정확하게 나오네요
참고로 vs2005이상에서는 _ftelli64라는 함수를 이용해서 간단하게 구할 수 있는 것 같습니다.
회사에서 쓰는 vs버전이 2003이라서,,
실제로 테스트는 못해봤네요
msdn : http://msdn.microsoft.com/en-us/library/0ys3hc0b(VS.80).aspx
GetFileSize 함수보다 사용이 좀 더 편한
GetFileSizeEx 함수가 있네요~
실행 결과는 당근 동일합니다~
다만 필요한 변수가 GetFileSize는 두개고(상위 비트, 하위 비트)
GetFileSizeEx는 그냥 LARGE_INTEGER의 포인터 하나만 있으면 됩니다.
msdn : http://msdn.microsoft.com/en-us/library/aa364957(VS.85).aspx
'프로그래밍 > 윈도우즈 프로그래밍' 카테고리의 다른 글
[MFC]월단위 날짜 계산을 위한 AddMonth 함수 구현 (0) | 2015.07.12 |
---|---|
[MFC]MAC 주소 얻기 (0) | 2015.06.24 |
[MFC]윈도우 시스템 날짜 변경 코드 (0) | 2015.02.18 |
64bit 윈도우7에서 32bit 프로그램의 레지스트리 저장위치 (0) | 2015.02.18 |