我使用以下方法使用DriveInfo类计算可用磁盘空间。但它与"我的电脑"中显示的可用磁盘空间值不匹配。以下方法返回 106 GB 的可用空间,而"我的计算机"仅显示 98.8 GB 的可用空间。如何计算准确值?为什么会有区别?
public long GetTotalFreeSpace(string driveName)
{
foreach (DriveInfo drive in DriveInfo.GetDrives())
{
if (drive.IsReady && drive.Name == driveName)
{
return drive.TotalFreeSpace;
}
}
return -1;
}
有两种约定:一种是 1 kB = 1000 字节,另一种是 1 kB = 1024 字节。第二个也称为 kibibyte。
这解释了所有差异:
106 * 1000 * 1000 * 1000 ~= 98.8 * 1024 * 1024 * 1024
所以我认为这就是区别的来源。