获取 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);

这工作正常,但前提是我传递驱动器号。有没有办法通过传递整个路径来检索可用空间?

获取 Windows 上给定路径的可用磁盘可用空间

尝试使用 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);