如何在物理磁盘中获取未分配的空间信息

时间:2011-10-05 04:56:48

标签: c# hard-drive

有人可以帮忙,如何使用C#在磁盘中获取未分配的空间信息?

2 个答案:

答案 0 :(得分:3)

如果您想知道卷的总可用空间,可以使用DriveInfo.AvailableFreeSpace

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx

您还可以使用WMI通过Win32_DiskPartitionWin32_DiskDrive获取有关磁盘分区的信息:

Win32_DiskPartition:http://msdn.microsoft.com/en-us/library/aa394135%28VS.85%29.aspx
Win32_DiskDrive:http://msdn.microsoft.com/en-us/library/aa394132%28v=VS.85%29.aspx

您可以使用DeviceID字段来确定哪个磁盘位于哪个磁盘上,然后使用StartOffsetSize字段构建parititions在物理磁盘上的位置图。然后只需使用Win32_DiskDrive中的数据计算整个磁盘大小,并计算余数。

这是一篇关于MSDN的文章,它可以为您提供使用WMI所需的所有帮助:
http://msdn.microsoft.com/en-us/library/ms257338.aspx

答案 1 :(得分:0)

尝试这样的事情:

using System.Linq;
using System.IO;
using System;
namespace DriveInfoExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Check only for fixed drives
            foreach (var di in DriveInfo.GetDrives().Where(d=>d.DriveType == DriveType.Fixed))
            {
                Console.WriteLine("Free space on drive {0}\t{1} bytes", di.Name, di.AvailableFreeSpace);
            }
        }
    }
}