如何在C#中检索磁盘信息?

时间:2009-01-05 09:23:15

标签: c# disk

我想使用C#访问计算机上逻辑驱动器的信息。我该怎么做到这一点?谢谢!

6 个答案:

答案 0 :(得分:68)

对于大多数信息,您可以使用DriveInfo类。

using System;
using System.IO;

class Info {
    public static void Main() {
        DriveInfo[] drives = DriveInfo.GetDrives();
        foreach (DriveInfo drive in drives) {
            //There are more attributes you can use.
            //Check the MSDN link for a complete example.
            Console.WriteLine(drive.Name);
            if (drive.IsReady) Console.WriteLine(drive.TotalSize);
        }
    }
}

答案 1 :(得分:5)

如果你没有驱动器号,那么装载的卷怎么样?

foreach( ManagementObject volume in 
             new ManagementObjectSearcher("Select * from Win32_Volume" ).Get())
{
  if( volume["FreeSpace"] != null )
  {
    Console.WriteLine("{0} = {1} out of {2}",
                  volume["Name"],
                  ulong.Parse(volume["FreeSpace"].ToString()).ToString("#,##0"),
                  ulong.Parse(volume["Capacity"].ToString()).ToString("#,##0"));
  }
}

答案 2 :(得分:5)

如果您想在本地计算机上获取单个/特定驱动器的信息。您可以使用DriveInfo类:

执行以下操作
//C Drive Path, this is useful when you are about to find a Drive root from a Location Path.
string path = "C:\\Windows";

//Find its root directory i.e "C:\\"
string rootDir = Directory.GetDirectoryRoot(path);

//Get all information of Drive i.e C
DriveInfo driveInfo = new DriveInfo(rootDir); //you can pass Drive path here e.g   DriveInfo("C:\\")

long availableFreeSpace = driveInfo.AvailableFreeSpace;
string driveFormat = driveInfo.DriveFormat;
string name = driveInfo.Name;
long totalSize = driveInfo.TotalSize;

答案 3 :(得分:4)

答案 4 :(得分:2)

检查DriveInfo班级,看看它是否包含您需要的所有信息。

答案 5 :(得分:0)

在ASP .NET Core 3.1中,如果要获取在Windows和Linux上均可使用的代码,则可以按以下方式获取驱动器:

var drives = DriveInfo
    .GetDrives()
    .Where(d => d.DriveType == DriveType.Fixed)
    .Where(d => d.IsReady
    .ToArray();

如果您在两个地方都没有应用,那么如果您在linux中运行代码(例如“ / dev”,“ / sys”,“ / etc / hosts”等),将会得到很多驱动器。 / p>

这在开发可在Linux Docker容器中工作的应用程序时特别有用。