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

หาพื้นที่ดิสก์ว่าง (Free Disk Space) ใน C#

ภาพรวม

ใช้คลาส DriveInfo ใน System.IO เพื่อดูข้อมูลดิสก์ รวมถึงพื้นที่ว่าง ขนาดทั้งหมด และรูปแบบไฟล์ระบบ

โค้ดตัวอย่าง


using System;
using System.IO;

public class Demo {
    public static void Main() {
        // ตรวจสอบไดรฟ์ E: (เปลี่ยนตามต้องการ)
        DriveInfo drive = new DriveInfo("E");

        if (!drive.IsReady) {
            Console.WriteLine("Drive not ready");
            return;
        }

        Console.WriteLine($"Drive: {drive.Name}");
        Console.WriteLine($"Volume Label: {drive.VolumeLabel}");
        Console.WriteLine($"File System: {drive.DriveFormat}");
        Console.WriteLine($"Drive Type: {drive.DriveType}");
        Console.WriteLine();

        // พื้นที่ว่าง (bytes)
        long freeSpace = drive.AvailableFreeSpace;
        long totalSpace = drive.TotalSize;
        long usedSpace = totalSpace - freeSpace;

        Console.WriteLine($"Free Space: {FormatBytes(freeSpace)}");
        Console.WriteLine($"Total Space: {FormatBytes(totalSpace)}");
        Console.WriteLine($"Used Space: {FormatBytes(usedSpace)}");

        // เปอร์เซ็นต์พื้นที่ว่าง
        double percentFree = (double)freeSpace / totalSpace * 100;
        Console.WriteLine($"Free Space: {percentFree:F2}%");
    }

    static string FormatBytes(long bytes) {
        string[] suffixes = { "B", "KB", "MB", "GB", "TB" };
        int i = 0;
        double value = bytes;
        while (value >= 1024 && i < suffixes.Length - 1) {
            value /= 1024;
            i++;
        }
        return $"{value:F2} {suffixes[i]}";
    }
}

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


Drive: E:\
Volume Label: Data
File System: NTFS
Drive Type: Fixed

Free Space: 125.45 GB
Total Space: 465.76 GB
Used Space: 340.31 GB
Free Space: 26.93%

คุณสมบัติหลักของ DriveInfo

Propertyคำอธิบาย
AvailableFreeSpaceพื้นที่ว่างที่ผู้ใช้ปัจจุบันเข้าถึงได้ (bytes)
TotalFreeSpaceพื้นที่ว่างทั้งหมดของดิสก์ (bytes)
TotalSizeขนาดดิสก์ทั้งหมด (bytes)
DriveFormatระบบไฟล์ (NTFS, FAT32, exFAT, etc.)
DriveTypeประเภท: Fixed, Removable, Network, CDRom, etc.
IsReadyพร้อมใช้งานหรือไม่ (สำคัญสำหรับ removable drives)

ดูไดรฟ์ทั้งหมด


foreach (DriveInfo drive in DriveInfo.GetDrives()) {
    if (drive.IsReady) {
        Console.WriteLine($"{drive.Name} - Free: {FormatBytes(drive.AvailableFreeSpace)}");
    }
}