System.IO.DriveInfo ক্লাস ব্যবহার করে ড্রাইভের তথ্য (টোটাল সাইজ, ফ্রি স্পেস, ড্রাইভ টাইপ ইত্যাদি) পাওয়া যায়। এটি উইন্ডোজ, লিনাক্স এবং ম্যাক-এ সব জায়গায় কাজ করে।
বেসিক ব্যবহার
using System;
using System.IO;
public class DiskSpaceInfo
{
public static void Main()
{
// ড্রাইভ লেটার বা পাথ দিন (যেমন "C:", "D:", "/" লিনাক্সে)
DriveInfo drive = new DriveInfo("C");
if (!drive.IsReady)
{
Console.WriteLine("ড্রাইভ রেডি নয় (হয় নেই বা অ্যাক্সেসযোগ্য নয়)।");
return;
}
// বাইটে মান
long totalSize = drive.TotalSize;
long freeSpace = drive.AvailableFreeSpace; // বর্তমান ইউজারের জন্য উপলব্ধ
long totalFreeSpace = drive.TotalFreeSpace; // ড্রাইভের টোটাল ফ্রি স্পেস
// রিডেবল ফরম্যাটে কনভার্ট
Console.WriteLine($"ড্রাইভ: {drive.Name}");
Console.WriteLine($"ড্রাইভ টাইপ: {drive.DriveType}");
Console.WriteLine($"ভলিউম লেবেল: {drive.VolumeLabel}");
Console.WriteLine($"টোটাল সাইজ: {FormatBytes(totalSize)}");
Console.WriteLine($"ফ্রি স্পেস (ইউজার): {FormatBytes(freeSpace)}");
Console.WriteLine($"টোটাল ফ্রি স্পেস: {FormatBytes(totalFreeSpace)}");
// পারসেন্টেজ
double freePercent = (double)freeSpace / totalSize * 100;
Console.WriteLine($"ফ্রি স্পেস: {freePercent:F2}%");
}
static string FormatBytes(long bytes)
{
string[] suffixes = { "B", "KB", "MB", "GB", "TB", "PB" };
int i = 0;
double value = bytes;
while (value >= 1024 && i < suffixes.Length - 1)
{
value /= 1024;
i++;
}
return $"{value:F2} {suffixes[i]}";
}
}
আউটপুট উদাহরণ
ড্রাইভ: C:\
ড্রাইভ টাইপ: Fixed
ভলিউম লেবেল: Windows
টোটাল সাইজ: 476.94 GB
ফ্রি স্পেস (ইউজার): 123.45 GB
টোটাল ফ্রি স্পেস: 123.45 GB
ফ্রি স্পেস: 25.88%
সभी ড্রাইভের তথ্য দেখানো
foreach (DriveInfo drive in DriveInfo.GetDrives())
{
if (drive.IsReady)
{
Console.WriteLine($"{drive.Name} ({drive.DriveType})");
Console.WriteLine($" টোটাল: {FormatBytes(drive.TotalSize)}");
Console.WriteLine($" ফ্রি: {FormatBytes(drive.AvailableFreeSpace)} ({(double)drive.AvailableFreeSpace / drive.TotalSize * 100:F1}%)");
}
else
{
Console.WriteLine($"{drive.Name} - রেডি নয়");
}
}
DriveInfo প্রপার্টি রেফারেন্স
| প্রপার্টি | ব্যাখ্যা |
|---|---|
AvailableFreeSpace | বর্তমান ইউজারের জন্য উপলব্ধ ফ্রি স্পেস (বাইটে) |
TotalFreeSpace | ড্রাইভের মোট ফ্রি স্পেস (বাইটে) |
TotalSize | ড্রাইভের মোট ক্যাপাসিটি (বাইটে) |
DriveType | Fixed, Removable, Network, CDRom, Ram, Unknown |
IsReady | ড্রাইভ অ্যাক্সেসযোগ্য কিনা |
VolumeLabel | ড্রাইভের লেবেল/নাম |
DriveFormat | ফাইল সিস্টেম (NTFS, FAT32, exFAT ইত্যাদি) |
লো-লেভেল API (Windows-নির্দিষ্ট, বেশি ডিটেইল)
using System.Runtime.InteropServices;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetDiskFreeSpaceEx(
string lpDirectoryName,
out ulong lpFreeBytesAvailable,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes
);
// ব্যবহার
GetDiskFreeSpaceEx("C:\\", out ulong freeAvail, out ulong total, out ulong totalFree);
সাধারণ সমস্যা এবং সমাধান
- UnauthorizedAccessException: অ্যাডমিন প্রিভিলেজ দরকার হয় সিস্টেম ড্রাইভের জন্য
- DriveNotFoundException: ড্রাইভ লেটার ভুল বা ড্রাইভ মাউন্ট নেই
- নেটওয়ার্ক ড্রাইভ:
DriveType.Networkহলে ল্যাটেন্সি হতে পারে