【发布时间】:2011-12-01 04:39:39
【问题描述】:
谁能帮忙,如何使用 C# 获取磁盘中未分配的空间信息?
【问题讨论】:
-
定义未分配空间信息。可用的可用空间可以吗?
标签: c# hard-drive
谁能帮忙,如何使用 C# 获取磁盘中未分配的空间信息?
【问题讨论】:
标签: c# hard-drive
如果你想知道一个卷的总可用空间,你可以使用DriveInfo.AvailableFreeSpace。
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
您还可以使用 WMI 获取有关磁盘分区的信息,使用 Win32_DiskPartition 和 Win32_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 字段来识别哪个分区在哪个磁盘上,然后使用StartOffset 和Size 字段来构建分区在物理磁盘上的位置的映射。然后只需使用来自Win32_DiskDrive 的数据来计算整个磁盘大小,然后计算余数。
这是 MSDN 上的一篇文章,它可以为您提供使用 WMI 所需的所有帮助:
http://msdn.microsoft.com/en-us/library/ms257338.aspx
【讨论】:
试试这样的:
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);
}
}
}
}
【讨论】: