Java 根据环境属性区分不同操作系统
之前项目需要配置下载文件的路径,本机系统是win 10 ,而服务器系统是CentOS。配置默认下载路径(非项目内相对路径),就会出现问题。windows 路径是由盘符打头,而 CentOS 是由反斜杠 ‘/’开头,如何区分不同的系统?
根据环境属性获取具体的系统名,根据系统名判断。
String osName = System.getProperty("os.name");
1
或者
String osName = System.getProperties().getProperty("os.name");
1
使用的是 JDK 自带的方法, java.lang.System类的getProperties()方法。该方法的返回值是一个 Properties 对象,我们可以使用不同的属性名获取不同含义的环境属性值。
key value 含义
java.version Java Runtime Environment version JRE 运行环境版本
java.vendor Java Runtime Environment vendor JRE 供应商
java.vendor.url Java vendor URL Java 供应商网址
java.home Java installation directory java 安装目录
java.vm.specification.version Java Virtual Machine specification version java 虚拟机规格版本
java.vm.specification.vendor Java Virtual Machine specification vendor java 虚拟机规格供应商
java.vm.specification.name Java Virtual Machine specification name java 虚拟机详细名称
java.vm.version Java Virtual Machine implementation version java 虚拟机实现版本
java.vm.vendor Java Virtual Machine implementation vendor java 虚拟机实现供应商
java.vm.name Java Virtual Machine implementation name java 虚拟机实现名称
java.specification.version Java Runtime Environment specification version JRE 规格版本
java.specification.vendor Java Runtime Environment specification vendor JRE 规格供应商
java.specification.name Java Runtime Environment specification name JRE 规格名称
java.class.version Java class format version number java 类规格版本号
java.class.path Java class path java 类路径
java.library.path List of paths to search when loading libraries 加载库时搜索的路径列表
java.io.tmpdir Default temp file path 默认的临时文件路径
java.compiler Name of JIT compiler to use java 编译器名称
java.ext.dirs Path of extension directory or directories 扩展路径的文件夹
os.name Operating system name 操作系统名称
os.arch Operating system architecture 操作系统架构
os.version Operating system version 操作系统版本
file.separator File separator (“/” on UNIX) 文件分隔符
path.separator Path separator (“:” on UNIX) 路径分隔符
line.separator Line separator (“\n” on UNIX) 换行符
user.name User’s account name 用户名
user.home User’s home directory 用户主目录
user.dir User’s current working directory 当前目录
更多的属性可以遍历 Properties 变量,打印出 key : value 键值对。
Set<Entry<Object, Object>> sets = System.getProperties().entrySet();
for(Entry<Object, Object> entry : sets){
System.out.println(entry.getKey()+" : "+entry.getValue());
}
1
2
3
4
最后可以进行简单的封装
public class SystemRecognize {
public static Properties props;
static{
props = System.getProperties();
}
/**
* 获取系统的名称
* @return
*/
public static String getOSName(){
return props.getProperty("os.name");
}
/**
* 获取系统的架构
* @return
*/
public static String getOSArch(){
return props.getProperty("os.arch");
}
/**
* 获取系统的文件分隔符
* @return
*/
public static String getFileSeparator(){
return props.getProperty("file.separator");
}
/**
* 获取系统的属性值
* @return
*/
public static String getValue(String propertyName){
return props.getProperty(propertyName);
// return System.getProperty(propertyName);
}
}
转载于:https://blog.51cto.com/12267285/2139459