我正在更新一个应用程序,该应用程序以前使用AlphaFS为本地和网络路径提供IO操作。
其中一个功能是返回驱动器的可用空间。如果驱动器是本地驱动器或使用DriveInfo 映射,则此操作正常
var pathRoot = System.IO.Path.GetPathRoot(startPath);
var driveInfo = new DriveInfo(pathRoot);
AvailSpace = (ulong) driveInfo.AvailableFreeSpace;
TotalSpace = (ulong) driveInfo.TotalSize;
但对于unc路径,会出错
驱动器名称必须是根目录(即"C:\"(或驱动器号("C"(。
是否有适用于.NET Core 3.x中网络unc路径的DriveInfo替代方案?
如果你的应用程序只在Windows上运行,你可以尝试GetDiskFreeSpaceEx
,MSDN文档说它支持UNC路径。
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
out ulong lpFreeBytesAvailable,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes);
GetDiskFreeSpaceEx("\\server\path\", out var size, out var _, out var __);