Java 应用获取系统配置,获取临时目录,获取 Spring Boot Jar 包所在的目录。
java 应用系统配置
可以使用 System.getProperty(String key) 获取系统的配置信息,下面是可以的入参:
java.version | Java运行时环境版本 |
---|---|
java.vendor | Java运行时环境供应商 |
java.vendor.url | Java供应商的 URL |
java.home | Java安装目录 |
java.vm.specification.version | Java虚拟机规范版本 |
java.vm.specification.vendor | Java虚拟机规范供应商 |
java.vm.specification.name | Java虚拟机规范名称 |
java.vm.version | Java虚拟机实现版本 |
java.vm.vendor | Java虚拟机实现供应商 |
java.vm.name | Java虚拟机实现名称 |
java.specification.version | Java运行时环境规范版本 |
java.specification.vendor | Java运行时环境规范供应商 |
java.specification.name | Java运行时环境规范名称 |
java.class.version | Java类格式版本号 |
java.class.path | Java类路径 |
java.library.path | 加载库时搜索的路径列表 |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | 要使用的 JIT 编译器的名称 |
java.ext.dirs | 一个或多个扩展目录的路径 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.version | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
jar包所在目录
public ApplicationHome(Class<?> sourceClass) {
this.source = findSource((sourceClass != null) ? sourceClass : getStartClass());
this.dir = findHomeDir(this.source);
}
// 传入当前class 对象,取 class 对象的主目录
ApplicationHome home = new ApplicationHome(getClass());
ApplicationHome 提供对应用程序主目录的访问。尝试为 Jar 文件、分解的归档文件和直接运行的应用程序选择一个合理的目录(严谨点应该是文件系统的路径)。
ApplicationHome 提供了两个方法:
home.getDir():返回应用主目录,永不为空。
实际是获取当前 class 文件所在的目录,如果是在 IDEA 运用应用,打印输出的是:
...\target\classes
;如果是直接运行 Spring Boot Jar 文件,输出的就是 jar 所在的目录。home.getSource():返回用于查找主目录的基础源(构造方法传入的 class 对象),通常是 jar 文件或目录,如果 class 对象不存在,返回 null。
其它方式:
//第一种
File path = new File(ResourceUtils.getURL("classpath:").getPath());
if(!path.exists()) path = new File("");
System.out.println(path.getAbsolutePath());
//第二种
System.out.println(System.getProperty("user.dir"));
//第三种
String path1 = ClassUtils.getDefaultClassLoader().getResource("").getPath();
System.out.println(URLDecoder.decode(path1, "utf-8"));
//第四种
String path2 = ResourceUtils.getURL("classpath:").getPath();
System.out.println(path2);
//第五种
ApplicationHome h = new ApplicationHome(getClass());
File jarF = h.getSource();
System.out.println(jarF.getParentFile().toString());
IDEA 运行输出:
方式一:D:\workspace\demo\manager\manager-provider\target\classes
方式二:D:\workspace\demo
方式三:/D:/workspace/demo/manager/manager-provider/target/classes/
方式四:/D:/workspace/demo/manager/manager-provider/target/classes/
方式五:D:\workspace\demo\manager\manager-provider\target
运行 jar 包的输出:
注意方 式三 和 方式四,这样的路径在操作系统的文件系统中无法识别的,程序处理上就会报异常。
方式一:D:\workspace\demo\manager\manager-provider\target
方式二:D:\workspace\demo\manager\manager-provider\target
方式三:file:/D:/workspace/demo/manager/manager-provider/target/manager-provider.jar!/BOOT-INF/classes!/
方式四:file:/D:/workspace/demo/manager/manager-provider/target/manager-provider.jar!/BOOT-INF/classes!/
方式五:D:\workspace\demo\manager\manager-provider\target
获取临时文件目录
String tempPath = System.getProperty("java.io.tmpdir")
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载