在.Net中,确保路径作为存储文件的容量的最佳方法是什么?在下载之前,我需要确保我有足够的空间来存放文件,因为源代码不允许第二次下载该文件。我已经研究过System.IO.DriveInfo,但这不适用于UNC路径。
发布于 2009-05-12 14:57:48
下面是取自this page的一个简短函数,它展示了如何使用WMI获取任何驱动器(本地或网络/UNC)的空闲空间。
private static ulong GetFreeDiskSpaceInBytes(string drive)
{
ManagementObject disk =
new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");
disk.Get();
return (ulong)disk["FreeSpace"];
}如果您想要一个Win32应用编程接口解决方案,您可以按照this MSDN help page的建议使用GetDiskFreeSpaceEx函数。它似乎也支持本地和网络驱动器名称。
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如果您在将其转换为C#时遇到问题,请与我联系。
我不得不在这里推荐WMI解决方案,它是完全托管的(除了更少的行),但这两种方案中的任何一种都应该能做到这一点。
发布于 2009-05-12 14:58:04
我相信您可以使用WMI获得所需的答案,这通常是一个很好的起点。
发布于 2009-05-12 15:00:06
查看磁盘是否可以存储文件的唯一可靠方法是在磁盘上实际创建一个该大小的文件。
即使磁盘信息显示有足够的空间,由于磁盘碎片整理,您也很少能使用100%的空闲磁盘空间。
https://stackoverflow.com/questions/853202
复制相似问题