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

การตรวจสอบพื้นที่ว่างของไดรฟ์ใน C# (AvailableFreeSpace vs TotalFreeSpace)

คลาส DriveInfo มีคุณสมบัติ 2 อย่างสำหรับตรวจสอบพื้นที่ว่าง:

  • AvailableFreeSpace - พื้นที่ว่างที่ผู้ใช้ปัจจุบันสามารถใช้ได้ (คำนึงถึงโควตา/Quota)
  • TotalFreeSpace - พื้นที่ว่างทั้งหมดของไดรฟ์ (ไม่คำนึงถึงโควตา)

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

DriveInfo drive = new DriveInfo("D");
long available = drive.AvailableFreeSpace; // ไบต์
long totalFree = drive.TotalFreeSpace;     // ไบต์

โค้ดตัวอย่างสมบูรณ์

using System;
using System.IO;

public class Demo
{
    public static void Main()
    {
        try
        {
            DriveInfo drive = new DriveInfo("D");
            
            Console.WriteLine($"ไดรฟ์: {drive.Name}");
            Console.WriteLine($"รูปแบบ: {drive.DriveFormat}");
            Console.WriteLine($"พร้อมใช้งาน: {drive.IsReady}");
            
            if (drive.IsReady)
            {
                // แสดงเป็นไบต์
                Console.WriteLine($"\n--- หน่วยไบต์ ---");
                Console.WriteLine($"AvailableFreeSpace: {drive.AvailableFreeSpace:N0} bytes");
                Console.WriteLine($"TotalFreeSpace:     {drive.TotalFreeSpace:N0} bytes");
                Console.WriteLine($"TotalSize:          {drive.TotalSize:N0} bytes");
                
                // แสดงเป็น GB (เข้าใจง่ายกว่า)
                double gb = 1024.0 * 1024 * 1024;
                Console.WriteLine($"\n--- หน่วย GB ---");
                Console.WriteLine($"พื้นที่ว่างสำหรับผู้ใช้: {drive.AvailableFreeSpace / gb:F2} GB");
                Console.WriteLine($"พื้นที่ว่างทั้งหมด:     {drive.TotalFreeSpace / gb:F2} GB");
                Console.WriteLine($"ขนาดไดรฟ์ทั้งหมด:     {drive.TotalSize / gb:F2} GB");
                Console.WriteLine($"พื้นที่ใช้ไป:           {(drive.TotalSize - drive.TotalFreeSpace) / gb:F2} GB");
                
                // คำนวณเปอร์เซ็นต์
                double usedPercent = (double)(drive.TotalSize - drive.TotalFreeSpace) / drive.TotalSize * 100;
                Console.WriteLine($"ใช้ไป: {usedPercent:F1}%");
            }
            else
            {
                Console.WriteLine("ไดรฟ์ไม่พร้อมใช้งาน");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"ข้อผิดพลาด: {ex.Message}");
        }
    }
}

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

ไดรฟ์: D:\
รูปแบบ: NTFS
พร้อมใช้งาน: True

--- หน่วยไบต์ ---
AvailableFreeSpace: 722,243,567,912 bytes
TotalFreeSpace:     722,243,567,912 bytes
TotalSize:          1,000,204,886,016 bytes

--- หน่วย GB ---
พื้นที่ว่างสำหรับผู้ใช้: 672.65 GB
พื้นที่ว่างทั้งหมด:     672.65 GB
ขนาดไดรฟ์ทั้งหมด:     931.51 GB
พื้นที่ใช้ไป:           258.86 GB
ใช้ไป: 27.8%

ความแตกต่างสำคัญ

คุณสมบัติคำอธิบายเมื่อใดที่ต่างกัน
AvailableFreeSpaceพื้นที่ที่ผู้ใช้คนนี้ใช้ได้เมื่อตั้งค่า Disk Quota ไว้
TotalFreeSpaceพื้นที่ว่างจริงของดิสก์ไม่คำนึงถึง Quota

ในกรณีทั่วไป (ไม่ได้ตั้ง Quota) ทั้งสองค่าจะเท่ากัน

ข้อควรระวัง

  • ค่าคืนมาเป็น long (ไบต์) - ต้องแปลงหน่วยเอง
  • ต้องตรวจสอบ IsReady ก่อนอ่านค่า
  • อาจต้องการสิทธิ์ Administrator บนบางระบบ
  • บน Linux ใช้ mount point แทนตัวอักษรไดรฟ์