C#方法string driveName ="C:\\";
System.IO.DriveInfo[] drivers = System.IO.DriveInfo.GetDrives();
foreach (var drive in drivers)
{
if(driveName == drive.Name)
Console.WriteLine(drive.TotalFreeSpace / (1024 *1024*1024*1.0f) +"G");
}
C#只能一次性擷取所有的磁碟,所以如果指定某個磁碟的話則需要進行判斷,並且擷取到的空間單位為位元組(Byte)
C++方法DWORD64 qwFreeBytes, qwFreeBytesToCaller, qwTotalBytes;
bResult =GetDiskFreeSpaceEx(TEXT("C:"),
(PULARGE_INTEGER)&qwFreeBytesToCaller,
(PULARGE_INTEGER)&qwTotalBytes,
(PULARGE_INTEGER)&qwFreeBytes);
if (bResult)
{
cout <<"Use GetDiskFreeSpaceEx"<< endl;
cout <<"Total Byte: "<< qwTotalBytes << endl;
cout <<"FreeByte: "<< qwFreeBytes << endl;
cout <<"FreeByte available: "<< qwFreeBytesToCaller << endl;
cout <<"Free G is "<< qwFreeBytesToCaller /1024/1024/1024*1.0f << endl;
}
GetDiskFreeSpaceEx 函數在MSDN上解釋
BOOL WINAPI GetDiskFreeSpaceEx(
_In_opt_ LPCTSTR lpDirectoryName,
_Out_opt_ PULARGE_INTEGER lpFreeBytesAvailable,
_Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes,
_Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
GetDiskFreeSpaceEx擷取到的資料單位同樣為Byte