我需要可以在Visual Studio和Visual Studio下编译的代码。单声道,&在Linux或Windows上运行。
我需要返回可用空间,只给出目录的路径。
在Windows上,我会按照以下方式做点什么 -
var file = new FileInfo(path);
var drive = new DriveInfo(file.Directory.Root.FullName);
return drive.AvailableFreeSpace;
然而在Linux上,这似乎抛出了一个Argument Exception。 file.Directory.Root.FullName返回'/'。 DriveInfo抛出“驱动器名称不存在”的参数异常
有什么想法吗?
由于
答案 0 :(得分:0)
您可以简单地使用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%| /