Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การดึงรายชื่อไดรฟ์ทั้งหมดใน C# ด้วย DriveInfo.GetDrives()

คลาส DriveInfo ใน namespace System.IO ให้ข้อมูลเกี่ยวกับไดรฟ์ต่างๆ ในระบบ เมธอดสแตติก GetDrives() คืนค่าอาร์เรย์ของออบเจกต์ DriveInfo แสดงถึงไดรฟ์ทั้งหมดที่ระบบปฏิบัติการตรวจพบ

รูปแบบการใช้งาน

DriveInfo[] drives = DriveInfo.GetDrives();

โค้ดตัวอย่าง: แสดงชื่อไดรฟ์ทั้งหมด

using System;
using System.IO;

public class Demo
{
    public static void Main()
    {
        DriveInfo[] drives = DriveInfo.GetDrives();
        
        Console.WriteLine("รายชื่อไดรฟ์ในระบบ:");
        foreach (DriveInfo drive in drives)
        {
            Console.WriteLine($"ไดรฟ์: {drive.Name}");
            
            // แสดงข้อมูลเพิ่มเติมหากไดรฟ์พร้อมใช้งาน
            if (drive.IsReady)
            {
                Console.WriteLine($"  รูปแบบ: {drive.DriveFormat}");
                Console.WriteLine($"  ขนาดทั้งหมด: {drive.TotalSize / (1024.0 * 1024 * 1024):F2} GB");
                Console.WriteLine($"  พื้นที่ว่าง: {drive.AvailableFreeSpace / (1024.0 * 1024 * 1024):F2} GB");
                Console.WriteLine($"  ประเภท: {drive.DriveType}");
            }
            else
            {
                Console.WriteLine("  (ไดรฟ์ไม่พร้อมใช้งาน)");
            }
            Console.WriteLine();
        }
    }
}

ผลลัพธ์ตัวอย่าง (Windows)

รายชื่อไดรฟ์ในระบบ:
ไดรฟ์: C:\
  รูปแบบ: NTFS
  ขนาดทั้งหมด: 476.94 GB
  พื้นที่ว่าง: 120.45 GB
  ประเภท: Fixed

ไดรฟ์: D:\
  รูปแบบ: NTFS
  ขนาดทั้งหมด: 931.51 GB
  พื้นที่ว่าง: 500.12 GB
  ประเภท: Fixed

ไดรฟ์: E:\
  (ไดรฟ์ไม่พร้อมใช้งาน)

ผลลัพธ์ตัวอย่าง (Linux)

รายชื่อไดรฟ์ในระบบ:
ไดรฟ์: /
  รูปแบบ: ext4
  ขนาดทั้งหมด: 20.00 GB
  พื้นที่ว่าง: 8.50 GB
  ประเภท: Fixed

คุณสมบัติสำคัญของ DriveInfo

คุณสมบัติคำอธิบาย
Nameชื่อไดรฟ์ (เช่น C:\, /)
DriveTypeประเภท: Fixed, Removable, Network, CDRom, Ram, Unknown
DriveFormatระบบไฟล์: NTFS, FAT32, exFAT, ext4, ฯลฯ
IsReadyสถานะพร้อมใช้งาน
TotalSizeขนาดรวม (ไบต์)
AvailableFreeSpaceพื้นที่ว่างสำหรับผู้ใช้ปัจจุบัน (ไบต์)
TotalFreeSpaceพื้นที่ว่างทั้งหมด (ไบต์)
VolumeLabelฉลากโวล्यุม
RootDirectoryไดเรกทอรีราก (DirectoryInfo)

ข้อควรระวัง

  • ต้องใช้ try-catch เนื่องจากอาจเกิด IOException หรือ UnauthorizedAccessException
  • ใน Linux/macOS จะรายงานเฉพาะ mount points ที่เข้าถึงได้
  • ควรตรวจสอบ IsReady ก่อนเข้าถึงคุณสมบัติอื่นๆ