gpt4 book ai didi

c# - 在 Linux 上的 C# 中查找目录的可用空间

转载 作者:IT王子 更新时间:2023-10-29 00:44:41 28 4
gpt4 key购买 nike

我需要既可以在 Visual Studio 和 Mono 下编译,又可以在 Linux 或 Windows 上运行的代码。

我需要返回可用的可用空间,只给出目录的路径。

在 Windows 上我会做一些类似的事情-

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 block |二手|可用 |使用% |安装在

/开发/sda4 | 497240864 | 31182380 | 466058484 | 7% |/

关于c# - 在 Linux 上的 C# 中查找目录的可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888941/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com