我正在更新一个以前使用 AlphaFS 为本地和网络路径提供 IO 操作的应用程序。
其中一项功能是返回驱动器可用空间和可用空间。
如果驱动器是本地驱动器或使用 DriveInfo 映射,这可以正常工作
var pathRoot = System.IO.Path.GetPathRoot(startPath);
var driveInfo = new DriveInfo(pathRoot);
AvailSpace = (ulong) driveInfo.AvailableFreeSpace;
TotalSpace = (ulong) driveInfo.TotalSize;
但对于 UNC 路径,它会出错
Drive name must be a root directory (i.e. 'C:\\') or a drive letter ('C'). "
是否有合适的 DriveInfo 替代方案可用于 .netcore 3.x 中的网络 unc 路径?
最佳答案
如果您的应用程序只在 Windows 上运行,您可以尝试 GetDiskFreeSpaceEx
,其中 MSDN docs说它支持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 __);
关于c# - 找出网络核心 3.x 中网络 UNC 路径上的可用空间和总空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037184/