在netcore3.x中查找网络unc路径上的可用空间和总空间



我正在更新一个应用程序,该应用程序以前使用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 __);

最新更新