获取 Windows 上给定路径的可用磁盘可用空间
本文关键字:磁盘 空间 路径 Windows 获取 | 更新日期: 2023-09-27 17:55:20
可能的重复项:
以编程方式确定 UNC 路径中的可用空间
我正在尝试找到一个可以从 C# 调用的函数来检索该信息。这是我到目前为止尝试过的:
String folder = "z:'myfolder"; // It works
folder = "''mycomputer'myfolder"; // It doesn't work
System.IO.DriveInfo drive = new System.IO.DriveInfo(folder);
System.IO.DriveInfo a = new System.IO.DriveInfo(drive.Name);
long HDPercentageUsed = 100 - (100 * a.AvailableFreeSpace / a.TotalSize);
这工作正常,但前提是我传递驱动器号。有没有办法通过传递整个路径来检索可用空间?
尝试使用 winapi 函数 GetDiskFreeSpaceEx:
[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
out ulong lpFreeBytesAvailable,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes);
ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;
bool success = GetDiskFreeSpaceEx(@"''mycomputer'myfolder",
out FreeBytesAvailable,
out TotalNumberOfBytes,
out TotalNumberOfFreeBytes);
if(!success)
throw new System.ComponentModel.Win32Exception();
Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);