从文件大小获取磁盘上的文件大小

Get file size on disk from file size

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

尺寸 3,06 MB(3.216.171 字节)

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

我有 512 bytes/sector 个文件系统

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

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

有没有一种方法可以根据文件大小获取光盘大小?

我想念什么?

你的文件长度是0x31132B。

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

这可以计算为:

clusterSize * ceil(fileSize * 1.0 / clusterSize)

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

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

您从 GetDiskFreeSpace 中获取簇大小,无论如何您都需要调用它来确定您的文件是否适合。查看现有答案:

  • Getting the cluster size of a hard drive (through code)

当然,其他因素会影响存储文件所使用的真实存储...如果目录在其集群中没有足够的 space 用于新条目,如果您正在存储元数据如果启用了压缩,则它不适合目录。但是对于一个“普通”的文件系统,上面的计算是正确的。