【问题标题】:How to know on which drive an Java Application is installed?如何知道 Java 应用程序安装在哪个驱动器上?
【发布时间】:2009-10-16 01:09:54
【问题描述】:

是否已经有一个现有的对象/方法能够告诉我们正在运行的 Java 应用程序安装在哪个驱动器上?

谢谢。

法里德

【问题讨论】:

    标签: java


    【解决方案1】:

    在 Windows 上尝试以下操作:

    File file = new File(".").getAbsoluteFile();
    File root = file.getParentFile();
    while (root.getParentFile() != null) {
        root = root.getParentFile();
    }
    System.out.println("Drive is: "+root.getPath());
    

    在 Unix 系统上,这将不太有用,因为根始终是 /

    【讨论】:

      【解决方案2】:

      查看此示例:http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/

      在 Windows 环境中,您可以读取 HOMEDRIVE 变量。 如果您运行此代码,您将看到所有可用的环境变量。

      import java.util.Map;
      
      public class EnvMap {
          public static void main (String[] args) {
              Map<String, String> env = System.getenv();
              for (String envName : env.keySet()) {
                  System.out.format("%s=%s%n", envName, env.get(envName));
              }
          }
      }
      

      HOMEDRIVE 在 Unix 环境中不作为一个概念存在。

      【讨论】:

        【解决方案3】:

        根据java.io.Filejavadoc:

        抽象路径名的父级可以 可以通过调用 getParent() 这个类的方法和 由路径名的前缀和 路径名中的每个名称 顺序除了最后一个。每个 目录的绝对路径名是 任何 File 对象的祖先 绝对抽象路径名 以目录的绝对值开头 路径名。例如,目录 由抽象路径名表示 “/usr”是目录的祖先 由路径名表示 “/usr/local/bin”。

        前缀概念用于处理 UNIX 平台上的根目录, 和驱动器说明符,根目录 和 Microsoft Windows 上的 UNC 路径名 平台,如下:

        • 对于 UNIX 平台,绝对路径名的前缀始终是“/”。 相对路径名没有前缀。这 表示根的抽象路径名 目录具有前缀“/”和 空名称序列。

        • 对于 Microsoft Windows 平台,包含驱动器说明符的路径名前缀由驱动器号组成,后跟“:”,如果路径名是绝对路径,则可能后跟“\\”。 UNC 路径名的前缀是“\\\\”;主机名和共享名是名称序列中的前两个名称。未指定驱动器的相对路径名没有前缀。

        所以一个解决方案可能是创建一个相对的File 对象(使用"." 作为当前目录),获取父级并提取驱动器号。这当然是不可移植的。

        【讨论】:

          【解决方案4】:

          如果你想知道正在运行的系统的当前工作目录,你可以使用如下:

          String currentDirectory = System.getProperty("user.dir");
          

          这会告诉你它开始的目录,通常是 Jar 文件所在的位置,或者类路径的根目录。

          编辑: System Class javadoc for the method getProperties() 具有一组通用的可用系统属性。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-18
            • 1970-01-01
            相关资源
            最近更新 更多