在Linux上的C#中查找目录的可用空间
我需要的代码既可以在VisualStudio和Mono下编译,也可以在Linux或Windows上运行 我需要返回可用空间,只给出目录的路径 在windows上,我会按照-在Linux上的C#中查找目录的可用空间,c#,linux,mono,cross-platform,diskspace,C#,Linux,Mono,Cross Platform,Diskspace,我需要的代码既可以在VisualStudio和Mono下编译,也可以在Linux或Windows上运行 我需要返回可用空间,只给出目录的路径 在windows上,我会按照- var file = new FileInfo(path); var drive = new DriveInfo(file.Directory.Root.FullName); return drive.AvailableFreeSpace; 然而,在Linux上,这似乎引发了一个参数异常。file.Directory.R
var file = new FileInfo(path);
var drive = new DriveInfo(file.Directory.Root.FullName);
return drive.AvailableFreeSpace;
然而,在Linux上,这似乎引发了一个参数异常。file.Directory.Root.FullName返回“/”。DriveInfo引发“驱动器名不存在”的参数异常
有什么想法吗
谢谢您可以简单地使用linux df命令。这将返回计算机上所有可用磁盘的摘要
public static class ServersManager
{
public static string GetDiskSpace()
{
return string.Join(" ", "df").Bash();
}
private static string Bash(this string cmd)
{
var escapedArgs = cmd.Replace("\"", "\\\"");
var process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "/bin/bash",
Arguments = $"-c \"{escapedArgs}\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
}
};
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return result;
}
}
函数GetDiskSpace返回以下形式的表:
文件系统| 1K块|已使用|可用|使用%|安装在
/dev/sda4 | 497240864 | 31182380 | 466058484 | 7%|/您检查过这个吗?我已经读过了。我看不出它在这种情况下会有什么帮助?我认为“新解决方案”部分解释了如何以不同的方式启动应用程序,这实际上可能会解决问题。case:使所有文件系统访问不区分大小写;驱动器:从路径名中删除驱动器名。我不知道这两种方法如何解决这个问题——它所能做的就是从windows中删除驱动器号,可能也会破坏它。(我正在尝试查找驱动器名)