我正在更新以前使用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')。
对于DriveInfo核心3.x中的网络unc路径,是否有适合的替代方案?
发布于 2020-04-05 10:54:39
如果您的应用程序仅在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 __);https://stackoverflow.com/questions/61037184
复制相似问题