从文件大小获取磁盘上的文件大小
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 用于新条目,如果您正在存储元数据如果启用了压缩,则它不适合目录。但是对于一个“普通”的文件系统,上面的计算是正确的。
我在 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 用于新条目,如果您正在存储元数据如果启用了压缩,则它不适合目录。但是对于一个“普通”的文件系统,上面的计算是正确的。