C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了更快获取文件大小信息的方法C.大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个函数获取文件的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.所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: