int Directory::GetfileSize(const std::string &filepath){ int filesize = -1;#ifdef linux struct stat fileStats; if(stat(filepath.c_str(),&fileStats) != -1) filesize = fileStats.st_size;#else std::wstring wIDePath; Unicode::AnsiToUnicode(wIDePath,filepath); HANDLE hfile = Createfile(wIDePath.c_str(),file_SHARE_READ | file_SHARE_WRITE,OPEN_EXISTING,file_ATTRIBUTE_norMAL,0); if (hfile > 0) { filesize = ::GetfileSize( hfile,NulL); } CloseHandle(hfile);#endif return filesize;}解决方法 至少对于windows,我想我会使用这样的东西:
__int64 Directory::GetfileSize(std::wstring const &path) { WIN32_FIND_DATAW data; HANDLE h = FindFirstfileW(path.c_str(),&data); if (h == INVALID_HANDLE_VALUE) return -1; FindClose(h); return data.nfileSizeLow | (__int64)data.nfileSizeHigh << 32;}
如果您使用的编译器支持它,您可能希望使用long long而不是__int64.你可能不想使用int,因为它只适用于高达2 GB的文件,而且大于这个文件现在很常见(尽管在WinCE设备上可能不常见).
我希望这比大多数其他方法更快.它根本不需要打开文件本身,只需查找文件的目录条目(或者,在类似NTFS的情况下,它的主文件表条目).
总结以上是内存溢出为你收集整理的更快获取文件大小信息的方法C.全部内容,希望文章能够帮你解决更快获取文件大小信息的方法C.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)