我试图获得16 GB的txt文件的文件大小。但我得到了不同的大小与真实的大小。谁能帮助我?
HANDLE FileHandle = INVALID_HANDLE_VALUE;
long long FileSize;
FileHandle = CreateFileA(szInputFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
if(FileHandle == INVALID_HANDLE_VALUE)
return;
FileSize = GetFileSize(FileHandle, NULL);
3条答案
按热度按时间5n0oy7gb1#
正如您在
GetFileSize
documentation中所看到的:如果文件大小超过32位,则必须提供第二个参数,以填充大小的高32位。
然后,您可以结合2,以获得最终的文件大小。
代码示例:
或者,如@IInspectable所述,您可以使用
GetFileSizeEx
:GetFileSizeEx
实际上是推荐的方法(上面的文档明确提到了它),这要归功于64位的单一结果和更容易的错误处理。yc0p9oo02#
GetFileSize
documentation建议使用GetFileSizeEx
,因为GetFileSizeEx
更简单:对于一个更多的C++解决方案
std::filesystem::file_size
(尽管这只适用于路径,而不适用于句柄):relj7zay3#
如果你不需要打开
HANDLE
文件,你可以使用FindFirstFile()
或GetFileAttributesEx()
从文件系统查询文件大小,例如: