Jaf*_*fin 4 c# .net-core .net-core-3.1
我正在更新一个以前使用 AlphaFS 为本地和网络路径提供 IO 操作的应用程序。
其中一项功能是返回驱动器的空闲和可用空间。如果驱动器是本地驱动器或使用 DriveInfo 进行映射,则此方法可以正常工作
var pathRoot = System.IO.Path.GetPathRoot(startPath);
var driveInfo = new DriveInfo(pathRoot);
AvailSpace = (ulong) driveInfo.AvailableFreeSpace;
TotalSpace = (ulong) driveInfo.TotalSize;
Run Code Online (Sandbox Code Playgroud)
但对于 unc 路径,它会出错
驱动器名称必须是根目录(即“C:\”)或驱动器号(“C”)。
是否有 DriveInfo 的合适替代方案可用于 .NET Core 3.x 中的网络 unc 路径?
如果您的应用程序仅在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 __);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
883 次 |
最近记录: |