是否已有一个现有的对象/方法可以告诉我们运行的Java应用程序安装在哪个驱动器上?
感谢。
法里德
答案 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()具有可用的公共系统属性集。