kam*_*mpi 10 c windows filesize
我做了一个简单的函数,它获得了文件的大小.
int file_size( char * filename )
{
int size;
struct stat st;
stat( filename, &st );
size = st.st_size;
return size;
}//file_size
Run Code Online (Sandbox Code Playgroud)
它工作正常,但如果我有一个大于4Gb的文件比我得到一个否定号码,当然这不是正确的文件大小.那我怎么能得到如此大的文件大小?我认为,返回值应该是其他任何像int但我不知道什么,我不认为,这将解决我的问题.
谢谢,
kampi
更新:
嗨!
我找到了解决方案.我必须使用__stat64.我修改了我的功能,现在它正在检索实际大小.我用8Gb大文件测试了它.
unsigned long long int file_size( char * filename )
{
unsigned long long int size;
struct __stat64 st;
__stat64( filename, &st );
size = st.st_size;
return size;
}//file_size
Run Code Online (Sandbox Code Playgroud)
并通知:
当我使用printf时,我不得不使用"%I64d"将其打印出来.
您可以使用Win32 GetFileSizeEx
功能.
HANDLE aFile = CreateFile
(
filename,
FILE_READ_ATTRIBUTES,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (aFile != INVALID_HANDLE_VALUE)
{
long long aSize;
GetFileSizeEx(aFile, &aSize);
CloseHandle(aFile);
return aSize;
}
else
return -1;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6243 次 |
最近记录: |