如何获取关于磁盘文件系统的信息?

8

是否可以使用.NET C# 3.5读取物理磁盘的文件系统信息(例如,它是否格式化为NTFS、FAT等)?

如果可以,我应该使用哪个类来确定这一点?

2个回答

11

是的,这是可能的。查询System.IO.DriveInfoDriveFormat属性即可。

public static void Main()
{
    DriveInfo[] allDrives = DriveInfo.GetDrives();

    foreach (DriveInfo d in allDrives)
    {
        Console.WriteLine("Drive {0}", d.Name);
        Console.WriteLine("Type: {0}", d.DriveFormat);
    }
}

@Sepehr 是的,谢谢。我不知道代码示例出了什么问题。我并不是想要一堆随机的空格,也不是指"文件类型"。 - Cody Gray

2

我觉得你也可能对GetVolumeInformation函数感兴趣。

[编辑]
你也可以使用WMI对象来获取这些信息,例如:

using System.Management;
.....
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
MessageBox.Show(disk["FreeSpace"] + " bytes");  // Displays disk free space
MessageBox.Show(disk["VolumeName"].ToString()); // Displays disk label
MessageBox.Show(disk["FileSystem"].ToString()); // Displays File system type   

要查看Win32_LogicalDisk类的所有可用属性列表,请参见此处


DriveInfo函数是对这个功能的托管封装。这意味着没有多少理由去使用P/Invoke并自己调用该函数。 - Cody Gray
@Cody Gray:是的,你说得对,但是OP可能想要读取磁盘序列号,据我所知,DriveInfo无法实现这一点。 - Anton Semenov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接