C#判断指定驱动器是否已经准备就绪的方法

小鹿同学
小鹿同学
发布时间:2026-10-14 | 1人浏览过
原创

在开发涉及本地或外部存储的设备管理程序时,准确获取磁盘状态至关重要。本文将演示如何使用 C# 的 System.IO.DriveInfo 类遍历系统驱动器,并通过 IsReady 属性过滤出当前真正可用的磁盘,从而安全地读取容量、格式和标签等关键数据。

实现原理与核心类

C# 提供了 DriveInfo 类专门用于获取驱动器信息。该类的静态方法 GetDrives() 可以返回当前系统中所有逻辑驱动器的数组。由于并非所有驱动器(如未插入光盘的光驱或拔出的 USB 接口)都能立即访问,因此在尝试读取具体属性前,必须先校验 IsReady 布尔属性。

操作步骤详解

第1步:引入必要的命名空间

为了使用驱动相关类,需要在代码顶部引入 System 和 System.IO 命名空间。

第2步:获取并遍历驱动器列表

调用 DriveInfo.GetDrives() 获取所有驱动器对象,然后使用 foreach 循环逐个检查。在循环中,先打印驱动器名称(如 C:\)和类型(如 Removable 代表移动介质, Fixed 代表硬盘)。

第3步:校验准备状态并读取详情

这是最关键的一步。只有当 d.IsReady 为 true 时,才能安全地读取以下可能引发 IOException 的属性:

  • TotalFreeSpace:获取驱动器上剩余的可用空间字节数。
  • DriveFormat:获取文件系统格式(如 NTFS, FAT32)。
  • VolumeLabel:获取卷标名称(如“系统盘”)。

完整代码示例

using System;
using System.IO;

class Program {
    static void Main(string[] args) {
        // 获取系统中所有驱动器的信息
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        Console.WriteLine("=== 驱动器状态列表 ===");

        foreach (DriveInfo d in allDrives) {
            // 首先输出基本信息
            Console.WriteLine($"驱动器: {d.Name} | 类型: {d.DriveType}");

            // 检查驱动器是否准备好被访问
            if (d.IsReady) {
                Console.WriteLine($"  - 状态: 就绪");
                Console.WriteLine($"  - 格式: {d.DriveFormat}");
                Console.WriteLine($"  - 卷标: {d.VolumeLabel}");
                Console.WriteLine($"  - 可用空间: {d.TotalFreeSpace / (1024 * 1024 * 1024):F2} GB");
            } else {
                Console.WriteLine($"  - 状态: 不可用或未连接");
            }
            Console.WriteLine(new string('-', 30));
        }

        Console.ReadLine();
    }
}

注意事项

  1. 异常处理:如果忽略 IsReady 检查直接访问 TotalFreeSpace,对于未挂载的光驱会抛出异常导致程序崩溃。
  2. 权限问题:在某些受限的用户账户下,可能需要管理员权限才能访问特定系统驱动器的详细属性。
  3. 单位换算:API 返回的空间大小为字节(bytes),实际展示时建议转换为 MB 或 GB 以便阅读。

以上就是C#判断指定驱动器是否已经准备就绪的详细内容,更多关于C#驱动管理与文件系统的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表