【发布时间】:2018-12-04 14:54:59
【问题描述】:
如何获取磁盘中文件的大小?如Windows资源管理器中所示?例如,文件名具有:
size: 172 bytes (172 bytes)
size on disk: 0 bytes
但我的应用程序显示:
GetDiskFreeSpace(L"C:\\" §orsPerCluster, &lpBytesPerSector,
&numberOfFreeClusters, &totalNumberOfClusters));
int TotalSize = lpBytesPerSector * ((fileLength + lpBytesPerSector - 1) / lpBytesPerSector);
printf("fileLength = %d\n", fileLength);
printf("TotalSize = %d\n", TotalSize);
输出:
fileLength = 172
TotalSize = 512
为了正确计算文件名在磁盘中的大小,我缺少什么?
【问题讨论】:
-
似乎windows版本是错误的。一个 172 字节的文件在磁盘上的大小不能为 0,似乎当 = 1 时它们已经向下舍入了扇区数
-
文件已损坏。这就是我要确定的。这算不算?
-
您可以尝试拨打
stat。 -
@SteveSummit:我在 Windows 上。这是仅限 UNIX 的功能吗?
-
@Jack 我认为有 Windows 版本,但我不确定,我不确定他们会告诉您与您的
GetDiskFreeSpace()通话不同的任何内容。但这可能值得一试。
标签: c winapi windows-10