可能重复:
以编程方式确定从UNCpath可用的空间
我试图find一个函数,我可以从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);
这工作正常,但只有当我传递一个驱动器号。 有没有办法通过一个完整的path来检索自由空间?
谢谢。
尝试使用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);