【问题标题】:Get file size on disk from file size从文件大小获取磁盘上的文件大小
【发布时间】:2020-10-17 12:22:37
【问题描述】:

我在 Windows 机器上有一个这种大小的文件,我需要根据文件大小计算磁盘上的文件大小:

尺寸 3.06 MB(3.216.171 字节)

磁盘大小 3,07 MB(3.219.456 字节)

我有 512 字节/扇区的文件系统

如何从文件大小计算我需要使用多少个扇区来存储文件?

我理解 3219456 / 512 = 6288,但是如何根据文件大小计算磁盘大小?

有一种从文件大小获取磁盘大小的方法吗?

我错过了什么?

【问题讨论】:

  • 重要的不是扇区大小,而是簇大小。

标签: windows file filesystems


【解决方案1】:

您的文件长度为 0x31132B。

所需的存储空间(四舍五入到最近的集群)为 0x312000。您的集群为 4kB (0x1000) 或 8kB (0x2000)。

这可以计算为:

clusterSize * ceil(fileSize * 1.0 / clusterSize)

1.0 防止整数除法。)在整数数学中,它是:

clusterSize * (1 + (fileSize - 1) / clusterSize)

您从GetDiskFreeSpace 获得集群大小,无论如何您都需要调用它来确定您的文件是否适合。请参阅此现有答案:

当然,其他因素可能会影响存储文件所使用的真实存储空间...在目录中,如果您启用了压缩。但是对于一个“普通”的文件系统,上面的计算是正确的。

【讨论】:

  • 您好 Ben,您的解决方案效果很好,感谢您抽出宝贵时间。
  • 这也不适用于稀疏文件。您应该调用 GetCompressedFileSize 来获取磁盘大小。
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2013-02-17
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多