Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 从文件大小获取磁盘上的文件大小_Windows_File_Filesystems - Fatal编程技术网

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

Windows 从文件大小获取磁盘上的文件大小,windows,file,filesystems,Windows,File,Filesystems,我在Windows计算机上有一个文件大小与此相同,我需要根据文件大小计算磁盘上的文件大小: 大小 3,06 MB(3.216.171字节) 磁盘大小 3,07 MB(3.219.456字节) 我有512字节/扇区文件系统 如何根据文件大小计算需要使用多少扇区来存储文件 我知道3219456/512=6288,但如何根据文件大小计算磁盘大小 有没有一种方法可以从文件大小中获取光盘大小 我遗漏了什么?您的文件长度是0x31132B 所需的存储(四舍五入到最近的群集)为0x312000。您的集群是4k

我在Windows计算机上有一个文件大小与此相同,我需要根据文件大小计算磁盘上的文件大小:

大小 3,06 MB(3.216.171字节)

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

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

如何根据文件大小计算需要使用多少扇区来存储文件

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

有没有一种方法可以从文件大小中获取光盘大小


我遗漏了什么?

您的文件长度是0x31132B

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

这可以计算为:

clusterSize * ceil(fileSize * 1.0 / clusterSize)
1.0
防止整数除法。)在整数数学中,它是:

clusterSize * (1 + (fileSize - 1) / clusterSize)
您可以从
GetDiskFreeSpace
获取集群大小,您需要调用它来确定文件是否适合。见现有答案:


当然,其他因素可能会影响存储文件所使用的真实存储。。。如果目录在其集群中没有足够的空间容纳新条目,如果您正在使用它存储不适合该目录的元数据,如果您启用了压缩功能。但对于“普通”文件系统,上述计算将是正确的。

您的文件长度为0x31132B

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

这可以计算为:

clusterSize * ceil(fileSize * 1.0 / clusterSize)
1.0
防止整数除法。)在整数数学中,它是:

clusterSize * (1 + (fileSize - 1) / clusterSize)
您可以从
GetDiskFreeSpace
获取集群大小,您需要调用它来确定文件是否适合。见现有答案:


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

重要的不是扇区大小,而是群集大小。重要的不是扇区大小,而是群集大小。您好Ben,非常适合您的解决方案,谢谢您的时间。这也不适用于稀疏文件。您应该调用GetCompressedFileSize以获取磁盘上的大小。您好Ben,您的解决方案非常有效,谢谢您的时间。这也不适用于稀疏文件。您应该调用GetCompressedFileSize以获取磁盘上的大小。