如何知道Java应用程序安装在哪个驱动器上?
是否已有一个现有的对象/方法能够告诉我们正在运行的Java应用程序安装在哪个驱动器上 谢谢 Farid检查这个例子: 在Windows环境中,可以读取HOMEDRIVE变量。 如果运行此代码,您将看到所有可用的环境变量如何知道Java应用程序安装在哪个驱动器上?,java,Java,是否已有一个现有的对象/方法能够告诉我们正在运行的Java应用程序安装在哪个驱动器上 谢谢 Farid检查这个例子: 在Windows环境中,可以读取HOMEDRIVE变量。 如果运行此代码,您将看到所有可用的环境变量 import java.util.Map; public class EnvMap { public static void main (String[] args) { Map<String, String> env = System.ge
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));
}
}
}
import java.util.Map;
公共类环境映射{
公共静态void main(字符串[]args){
Map env=System.getenv();
for(字符串envName:env.keySet()){
System.out.format(“%s=%s%n”,envName,env.get(envName));
}
}
}
HOMEDRIVE在Unix环境中不作为一个概念存在。检查此示例:
在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));
}
}
}
import java.util.Map;
公共类环境映射{
公共静态void main(字符串[]args){
Map env=System.getenv();
for(字符串envName:env.keySet()){
System.out.format(“%s=%s%n”,envName,env.get(envName));
}
}
}
HOMEDRIVE在Unix环境中不是一个概念。在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系统上,这将不太有用,因为根目录始终是/请在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系统上,这将不太有用,因为根据javadoc,根始终是/:
抽象路径名的父级可能
可以通过调用
该类的方法和
由路径名的前缀和
路径名的名称中的每个名称
顺序,除了最后一个。每个
目录的绝对路径名是
具有
绝对抽象路径名
从目录的绝对值开始
路径名。例如,目录
由抽象路径名表示
“/usr”是目录的祖先
由路径名表示
“/usr/local/bin”
前缀概念用于处理
UNIX平台上的根目录,
和驱动器说明符、根目录
和Microsoft Windows上的UNC路径名
平台,如下所示:
- 对于UNIX平台,绝对路径名的前缀始终为“/”。 相对路径名没有前缀。这个 表示根的抽象路径名 目录具有前缀“/”和 空名称序列
- 对于Microsoft Windows平台,包含驱动器说明符的路径名前缀由驱动器号后跟“:”组成,如果路径名是绝对的,则可能后跟“\\”。UNC路径名的前缀为“\\\”;主机名和共享名是名称序列中的前两个名称。不指定驱动器的相对路径名没有前缀
文件
对象(对当前目录使用“
),获取父目录并提取驱动器号。这当然是不可移植的。根据javadoc:
抽象路径名的父级可能
可以通过调用
该类的方法和
由路径名的前缀和
路径名的名称中的每个名称
顺序,除了最后一个。每个
目录的绝对路径名是
具有
绝对抽象路径名
从目录的绝对值开始
路径名。例如,目录
由抽象路径名表示
“/usr”是目录的祖先
由路径名表示
“/usr/local/bin”
前缀概念用于处理
UNIX平台上的根目录,
和驱动器说明符、根目录
和Microsoft Windows上的UNC路径名
平台,如下所示:
- 对于UNIX平台,绝对路径名的前缀始终为“/”。 相对路径名没有前缀。这个 表示根的抽象路径名 目录具有前缀“/”和 空名称序列
- 对于Microsoft Windows平台,包含驱动器说明符的路径名前缀由驱动器号后跟“:”组成,如果路径名是绝对的,则可能后跟“\\”。UNC路径名的前缀为“\\\”;主机名和共享名是名称序列中的前两个名称。不指定驱动器的相对路径名没有前缀
因此,解决方案可能是创建一个相对的
文件
对象(对当前目录使用“
),获取父目录并提取驱动器号。这当然是不可移植的。如果您想知道正在运行的系统的当前工作目录,请使用以下命令:
String currentDirectory = System.getProperty("user.dir");
这将告诉您启动它的目录,通常是Jar文件所在的目录,或者类路径的根所在的目录
编辑:
具有可用的通用系统属性集。如果要了解正在运行的系统的当前工作目录,请使用以下选项:
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));
}
}
}
String currentDirectory = System.getProperty("user.dir");
这将告诉您启动它的目录,通常是Jar文件所在的目录,或者类路径的根所在的目录
编辑:
具有可用的通用系统属性集
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));
}
}
}