当前位置: 首页 > 知识库问答 >
问题:

Java程序如何列出所有分区并在Linux上获得它们的可用空间?

訾稳
2023-03-14

我想要分区的名称及其总空间,使用空间和可用空间的Linux系统使用java程序。

在Windows系统中,我得到了正确的值,但在Linux中,我只得到一个驱动器信息:

以下是我到目前为止所做的尝试。

public class DiskSpace {

public static void main(String[] args) {
    FileSystemView fsv = FileSystemView.getFileSystemView();
    File[] drives = File.listRoots();
    if (drives != null && drives.length > 0) {
        for (File aDrive : drives) {
            System.out.println("Drive Letter: " + aDrive);
            System.out.println("\tType: " + fsv.getSystemTypeDescription(aDrive));
            System.out.println("\tTotal space: " + aDrive.getTotalSpace());
            System.out.println("\tFree space: " + aDrive.getFreeSpace());
            System.out.println();
        }
    }
}

共有3个答案

子车海
2023-03-14

这是一个代码片段,仅显示名称装入的外部媒体。

String OS = System.getProperty("os.name");
if(OS.equals("Linux"))
{
    String s = "";
    Runtime rt = Runtime.getRuntime();
    int n=0;
    Process ps = rt.exec("ls /run/media/Rancho");// Write your UserName, mine is Rancho

    InputStream in = ps.getInputStream();
    while((n = in.read())!=-1)
    {
        char ch = (char) n;
        s+ = ch;
    }
    System.out.println(s);  
}
狄飞鹏
2023-03-14

Linux、Unix和类Unix系统有一个具有一个根的文件系统,其中可能有多个挂载点,在这些挂载点上可以挂载包含部分或完整Unix文件系统的分区——非Unix文件系统也可以挂载适当的软件来处理必要的转换,但统一的单根文件系统模型仍然存在。

如果您使用的FileSystemView类来自javax.swing.filechooser包,不要期望太多:

FileSystemView是JFileChooser通往文件系统的网关。从JDK1开始。1文件API不允许访问根分区、文件类型信息或隐藏文件位等信息,此类旨在尽可能直观地显示操作系统特定的文件系统信息。

Java许可证持有者可能希望提供不同的FileSystemView实现,以更好地处理给定的操作系统。

第二段是关键。

Java的虚拟机实现旨在抽象出您在本例中想要的特定于平台的东西。为了获得成功,您需要为您将支持的每个平台的本机系统API编写或查找本机调用包装器类。像FileSystemView类这样的“高级”抽象不太可能完整或可靠地提供所需的信息。

邵弘义
2023-03-14

Linux上没有驱动器号。如果您想知道有哪些分区,以及它们安装在哪里,请阅读/proc/mounts。当您有一个挂载点(在/proc/mounts中的第二列)时,使用new File(挂载点)。getTotalSpace()获取总空间。

 类似资料:
  • 我正在阅读这个关于JWTs的博客,以及如何使用它的签名部分来验证令牌是否确实是由受信任方颁发的。 https://hackernoon.com/json-web-tokens-jwt-demystified-f7e202249640 JSON Web Key(JWK)是一个JSON对象,其中包含一个众所周知的公钥,可用于验证签名的JWT的签名。 如果JWT的颁发者使用非对称密钥对JWT进行签名,那

  • 问题内容: 我想获得可用无线网络的列表。理想情况下,这将通过一些C调用进行,但是我不介意是否必须通过系统调用来混淆它。如果所需的C调用或程序不需要某些奇特的第三方包,甚至会更好。 互联网似乎建议我使用从命令行确实可以解决问题的技巧,但是我宁愿不需要root权限。我只想了解基础知识,什么也不想改变。 问题答案: 该无线工具包-它的iwlist是其中的一部分- 还包含一个无线工具帮助程序库。您需要包含

  • 获取“所有”AVSpeechSynthesisVoice对象列表的标准方法是请求: 但是,这仅显示每个语言区域对的唯一默认语音。e、 g.对于美国: 如果我看在设置应用程序下的一般→辅助功能→语音→语音→英语我看到我有'Siri女性(增强)'选择,但该语音是不可选的代码。完整的名单是 所以最大的问题是:如何从代码中选择Alex或Siri女性作为语音?

  • 问题内容: 如何列出Linux中某个组的所有成员(可能还包括其他unice)? 问题答案: 不幸的是,据我所知,没有很好的便携式方法可以做到这一点。如果您尝试解析/ etc / group(如其他人所建议的那样),则会错过以该组为主要组的用户以及通过UNIX平面文件(例如LDAP,NIS, pam-pgsql等)。 如果我绝对必须自己做,则可能相反:使用来获取系统上每个用户的组(这将使NSS看到所

  • 问题内容: 我想建立一个基于php的站点,该站点在我的Ubuntu服务器上(自动)执行一些命令 我要做的第一件事是转到文件(sudoers)并添加用户www-data,以便我可以以root权限执行php命令! 然后我的PHP代码是 它仅返回一个用户(最后一个用户)!如何使其返回所有用户? 谢谢 问题答案: 从exec的PHP手册中: 返回值 命令结果的最后一行。如果您需要执行命令并直接将命令中的所

  • 我想排序2列表并比较它们,但排序方法不起作用。我有2个字符串列表,其中包括整数。 这些是我的名单 我的getwords方法返回: