更快获取文件大小信息的方法C.

更快获取文件大小信息的方法C.,第1张

概述我有一个函数来获取文件的FileSize.我在WinCE上运行它.这是我目前的代码,似乎特别慢 int Directory::GetFileSize(const std::string &filepath){ int filesize = -1;#ifdef linux struct stat fileStats; if(stat(filepath.c_str(), 我有一个函数来获取文件的fileSize.我在WinCE上运行它.这是我目前的代码,似乎特别慢

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.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存