什么是.Net中确保路径作为存储文件容量的最佳方式.在下载之前我需要确保我有文件的空间,因为源不允许第二次下载文件.我查看了System.IO.DriveInfo,但这对UNC路径不起作用.
这是一个从该页面获取的简短函数,显示如何使用WMI获取任何驱动器(本地或网络/ UNC)的可用空间.
private static ulong GetFreeDiskSpaceInBytes(string drive)
{
ManagementObject disk =
new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");
disk.Get();
return (ulong)disk["FreeSpace"];
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Win32 API解决方案,则可以GetDiskFreeSpaceEx按照此MSDN帮助页面的建议使用该功能.它似乎也支持本地和网络驱动器名称.
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, _
lpFreeBytesAvailableToCaller As Currency, _
lpTotalNumberOfBytes As Currency, _
lpTotalNumberOfFreeBytes As Currency) As Long
Private Sub Form_Click()
Dim Status As Long
Dim TotalBytes As Currency
Dim FreeBytes As Currency
Dim BytesAvailableToCaller As Currency
Status = GetDiskFreeSpaceEx(Text1.Text, BytesAvailableToCaller, _
TotalBytes, FreeBytes)
If Status <> 0 Then
MsgBox Format(TotalBytes * 10000, "#,##0"), , "Total Bytes"
MsgBox Format(FreeBytes * 10000, "#,##0"), , "Free Bytes"
MsgBox Format(BytesAvailableToCaller * 10000, "#,##0"), , _
"Bytes Available To Caller"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您在将其转换为C#时遇到问题,请告诉我.
我不得不在这里推荐WMI解决方案,它是完全管理的(除了更少的线路),但要么应该做到这一点.