คลาส 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 แทนตัวอักษรไดรฟ์