如何知道Java应用程序安装在哪个驱动器上?

时间:2009-10-15 16:52:55

标签: java

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

感谢。

法里德

4 个答案:

答案 0 :(得分:4)

在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系统上,由于root始终为/

,因此不太有用

答案 1 :(得分:0)

选中此示例: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环境中不作为概念存在。

答案 2 :(得分:0)

根据java.io.File javadoc:

  

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

     

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

     
      
  • 对于UNIX平台,绝对路径名的前缀始终为“/”。   相对路径名没有前缀。该   表示根的抽象路径名   directory有前缀“/”和   空名序列。

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

  •   

因此,解决方案可能是创建一个相对File对象(对当前目录使用"."),获取父对象并提取驱动器号。这当然不便携。

答案 3 :(得分:0)

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

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

这将告诉你它启动的目录,它通常是Jar文件所在的位置,或类路径的根目录。

编辑: System Class javadoc for the method getProperties()具有可用的公共系统属性集。