
top.hmtools.system.SystemInfoTools Maven / Gradle / Ivy
package top.hmtools.system;
import top.hmtools.base.StringTools;
/**
* 获取当前系统环境信息的工具类
*
* @author HyboJ
*
*/
public class SystemInfoTools {
/**
* 获取运行时名称
*
* @return
*/
public static String getRuntimeName() {
return System.getProperty("java.runtime.name");
}
/**
* 获取用户当前运行Java程序所在的路径
*
* @return
*/
public static String getUserDir() {
return System.getProperty("user.dir");
}
/**
* 获取用户当前运行Java程序所在的路径
*
* @return
*/
public static String getCurrentProjectDir() {
return getUserDir();
}
/**
* 获取当前操作系统名称
*
* @return
*/
public static String getOSName() {
return System.getProperty("os.name");
}
/**
* 获取当前运行环境的jdk版本号(字符串数据类型结果)
*
* @return
*/
public static String getJDKVersionStr() {
return System.getProperty("java.version");
}
/**
* 取得当前Java impl.的版本的float
值。
*
* @return Java版本的float
值或0
*/
public static float getJDKVersionFloat() {
String jdkVersionStr = getJDKVersionStr();
if (jdkVersionStr == null) {
return 0f;
}
String str = jdkVersionStr.substring(0, 3);
if (jdkVersionStr.length() >= 5) {
str = str + jdkVersionStr.substring(4, 5);
}
return Float.parseFloat(str);
}
/**
* 取得当前Java impl.的版本的int
值。
*
* @return Java版本的int
值或0
*/
public static int getJDKVersionInt() {
String jdkVersionStr = getJDKVersionStr();
if (jdkVersionStr == null) {
return 0;
}
String str = jdkVersionStr.substring(0, 1);
str = str + jdkVersionStr.substring(2, 3);
if (jdkVersionStr.length() >= 5) {
str = str + jdkVersionStr.substring(4, 5);
} else {
str = str + "0";
}
return Integer.parseInt(str);
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.1,则返回true
*/
public static boolean isJava11() {
return getJavaVersionMatches("1.1");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.2,则返回true
*/
public static boolean isJava12() {
return getJavaVersionMatches("1.2");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.3,则返回true
*/
public static boolean isJava13() {
return getJavaVersionMatches("1.3");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.4,则返回true
*/
public static boolean isJava14() {
return getJavaVersionMatches("1.4");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.5,则返回true
*/
public static boolean isJava15() {
return getJavaVersionMatches("1.5");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.6,则返回true
*/
public static boolean isJava16() {
return getJavaVersionMatches("1.6");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.7,则返回true
*/
public static boolean isJava17() {
return getJavaVersionMatches("1.7");
}
/**
* 判断当前Java的版本。
*
*
* 如果不能取得系统属性java.version
(因为Java安全限制),则总是返回 false
*
*
* @return 如果当前Java版本为1.8,则返回true
*/
public static boolean isJava18() {
return getJavaVersionMatches("1.8");
}
/**
* 匹配当前Java的版本。
*
* @param versionPrefix Java版本前缀
*
* @return 如果版本匹配,则返回true
*/
public static boolean getJavaVersionMatches(String versionPrefix) {
String jdkVersionStr = getJDKVersionStr();
if (jdkVersionStr == null) {
return false;
}
return jdkVersionStr.startsWith(versionPrefix);
}
/**
* 判定当前Java的版本是否大于等于指定的版本号。
*
*
* 例如:
*
*
*
* - 测试JDK 1.2:
isJavaVersionAtLeast(1.2f)
* - 测试JDK 1.2.1:
isJavaVersionAtLeast(1.31f)
*
*
*
* @param requiredVersion 需要的版本
*
* @return 如果当前Java版本大于或等于指定的版本,则返回true
*/
public static boolean isJavaVersionAtLeast(float requiredVersion) {
return getJDKVersionFloat() >= requiredVersion;
}
/**
* 判定当前Java的版本是否大于等于指定的版本号。
*
*
* 例如:
*
*
*
* - 测试JDK 1.2:
isJavaVersionAtLeast(120)
* - 测试JDK 1.2.1:
isJavaVersionAtLeast(131)
*
*
*
* @param requiredVersion 需要的版本
*
* @return 如果当前Java版本大于或等于指定的版本,则返回true
*/
public static boolean isJavaVersionAtLeast(int requiredVersion) {
return getJDKVersionInt() >= requiredVersion;
}
/**
* JVM is 32M or
64M
*
* @return 32 or
64
*/
public static String getSunArchDataModel() {
return System.getProperty("sun.arch.data.model");
}
/**
* 获取sun.boot.class.path
* @return
*/
public static String getSunBootClassPath() {
return System.getProperty("sun.boot.class.path");
}
/**
* 取得当前JRE的名称(取自系统属性:java.runtime.name
)。
*
*
* 例如Sun JDK 1.4.2: "Java(TM) 2 Runtime Environment, Standard Edition"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.3
*/
public static String getJREName() {
return System.getProperty("java.runtime.name");
}
/**
* 取得当前JRE的版本(取自系统属性:java.runtime.version
)。
*
*
* 例如Sun JDK 1.4.2:"1.4.2-b28"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.3
*/
public static String getJREVersion() {
return System.getProperty("java.runtime.version");
}
/**
* 取得当前JRE的安装目录(取自系统属性:java.home
)。
*
*
* 例如Sun JDK 1.4.2:"/opt/jdk1.4.2/jre"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getJREHomeDir() {
return System.getProperty("java.home");
}
/**
* 取得当前JRE的扩展目录列表(取自系统属性:java.ext.dirs
)。
*
*
* 例如Sun JDK 1.4.2:"/opt/jdk1.4.2/jre/lib/ext:..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.3
*/
public static String getJREExtDirs() {
return System.getProperty("java.ext.dirs");
}
/**
* 取得当前JRE的endorsed目录列表(取自系统属性:java.endorsed.dirs
)。
*
*
* 例如Sun JDK 1.4.2:"/opt/jdk1.4.2/jre/lib/endorsed:..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.4
*/
public static String getJREEndorsedDirs() {
return System.getProperty("java.endorsed.dirs");
}
/**
* 取得当前JRE的系统classpath(取自系统属性:java.class.path
)。
*
*
* 例如:"/home/admin/myclasses:/home/admin/..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getJREClassPath() {
return System.getProperty("java.class.path");
}
/**
* 取得当前JRE的系统classpath(取自系统属性:java.class.path
)。
*
*
* 例如:"/home/admin/myclasses:/home/admin/..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String[] getJREClassPathArray() {
return getJREClassPath().split(System.getProperty("path.separator")) ;
}
/**
* 取得当前JRE的class文件格式的版本(取自系统属性:java.class.version
)。
*
*
* 例如Sun JDK 1.4.2:"48.0"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getJREClassVersion() {
return System.getProperty("java.class.version");
}
/**
* 取得当前JRE的library搜索路径(取自系统属性:java.library.path
)。
*
*
* 例如Sun JDK 1.4.2:"/opt/jdk1.4.2/bin:..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getJRELibraryPath() {
return System.getProperty("java.library.path");
}
/**
* 取得当前JRE的library搜索路径(取自系统属性:java.library.path
)。
*
*
* 例如Sun JDK 1.4.2:"/opt/jdk1.4.2/bin:..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*
*/
public static String[] getJRELibraryPathArray() {
return getJRELibraryPath().split(System.getProperty("path.separator"));
}
/**
* 取得当前JRE的URL协议packages列表(取自系统属性:java.library.path
)。
*
*
* 例如Sun JDK 1.4.2:"sun.net.www.protocol|..."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*
*/
public static String getJREProtocolPackages() {
return System.getProperty("java.protocol.handler.pkgs");
}
/**
* 取得当前JVM impl.的名称(取自系统属性:java.vm.name
)。
*
*
* 例如Sun JDK 1.4.2:"Java HotSpot(TM) Client VM"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getJVMName() {
return System.getProperty("java.vm.name");
}
/**
* 取得当前JVM impl.的版本(取自系统属性:java.vm.version
)。
*
*
* 例如Sun JDK 1.4.2:"1.4.2-b28"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getJVMVersion() {
return System.getProperty("java.vm.version");
}
/**
* 取得当前JVM impl.的厂商(取自系统属性:java.vm.vendor
)。
*
*
* 例如Sun JDK 1.4.2:"Sun Microsystems Inc."
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getJVMVendor() {
return System.getProperty("java.vm.vendor");
}
/**
* 取得当前JVM impl.的信息(取自系统属性:java.vm.info
)。
*
*
* 例如Sun JDK 1.4.2:"mixed mode"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getJVMInfo() {
return System.getProperty("java.vm.info");
}
/**
* 取得当前登录用户的名字(取自系统属性:user.name
)。
*
*
* 例如:"admin"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getUserName() {
return System.getProperty("user.name");
}
/**
* 取得当前登录用户的home目录(取自系统属性:user.home
)。
*
*
* 例如:"/home/admin"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getUserHomeDir() {
return System.getProperty("user.home");
}
/**
* 取得当前目录(取自系统属性:user.dir
)。
*
*
* 例如:"/home/admin/working"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getUserCurrentDir() {
return System.getProperty("user.dir");
}
/**
* 取得临时目录(取自系统属性:java.io.tmpdir
)。
*
*
* 例如:"/tmp"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*
*/
public static String getUserTempDir() {
return System.getProperty("java.io.tmpdir");
}
/**
* 取得当前登录用户的语言设置(取自系统属性:user.language
)。
*
*
* 例如:"zh"
、"en"
等
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getUserLanguage() {
return System.getProperty("user.language");
}
/**
* 取得当前登录用户的国家或区域设置(取自系统属性:JDK1.4 user.country
或JDK1.2 user.region
)。
*
*
* 例如:"CN"
、"US"
等
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
*/
public static String getUserCountry() {
return StringTools.isBlank(System.getProperty("user.country"))?System.getProperty("user.region"):System.getProperty("user.country");
}
/**
* 取得当前OS的架构(取自系统属性:os.arch
)。
*
*
* 例如:"x86"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getOSArch() {
return System.getProperty("os.arch");
}
/**
* 取得当前OS的版本(取自系统属性:os.version
)。
*
*
* 例如:"5.1"
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getOSVersion() {
return System.getProperty("os.version");
}
private static boolean IS_OS_AIX = getOSMatches("AIX");
private static boolean IS_OS_HP_UX = getOSMatches("HP-UX");
private static boolean IS_OS_IRIX = getOSMatches("Irix");
private static boolean IS_OS_LINUX = getOSMatches("Linux") || getOSMatches("LINUX");
private static boolean IS_OS_MAC = getOSMatches("Mac");
private static boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
private static boolean IS_OS_OS2 = getOSMatches("OS/2");
private static boolean IS_OS_SOLARIS = getOSMatches("Solaris");
private static boolean IS_OS_SUN_OS = getOSMatches("SunOS");
private static boolean IS_OS_WINDOWS = getOSMatches("Windows");
private static boolean IS_OS_WINDOWS_2000 = getOSMatches("Windows", "5.0");
private static boolean IS_OS_WINDOWS_95 = getOSMatches("Windows 9", "4.0");
private static boolean IS_OS_WINDOWS_98 = getOSMatches("Windows 9", "4.1");
private static boolean IS_OS_WINDOWS_ME = getOSMatches("Windows", "4.9");
private static boolean IS_OS_WINDOWS_NT = getOSMatches("Windows NT");
private static boolean IS_OS_WINDOWS_XP = getOSMatches("Windows", "5.1");
/**
* 匹配OS名称。
*
* @param osNamePrefix OS名称前缀
* @param osVersionPrefix OS版本前缀
*
* @return 如果匹配,则返回true
*/
private static boolean getOSMatches(String osNamePrefix, String osVersionPrefix) {
if (StringTools.isBlank(getOSName()) || StringTools.isBlank(getOSVersion())) {
return false;
}
return getOSName().startsWith(osNamePrefix) && getOSVersion().startsWith(osVersionPrefix);
}
/**
* 匹配OS名称。
*
* @param osNamePrefix OS名称前缀
*
* @return 如果匹配,则返回true
*/
private static boolean getOSMatches(String osNamePrefix) {
if (StringTools.isBlank(getOSName())) {
return false;
}
return getOSName().startsWith(osNamePrefix);
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为AIX,则返回true
*/
public static boolean isAix() {
return IS_OS_AIX;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为HP-UX,则返回true
*/
public static boolean isHpUx() {
return IS_OS_HP_UX;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为IRIX,则返回true
*/
public static boolean isIrix() {
return IS_OS_IRIX;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Linux,则返回true
*/
public static boolean isLinux() {
return IS_OS_LINUX;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Mac,则返回true
*/
public static boolean isMac() {
return IS_OS_MAC;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为MacOS X,则返回true
*/
public static boolean isMacOsX() {
return IS_OS_MAC_OSX;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为OS2,则返回true
*/
public static boolean isOs2() {
return IS_OS_OS2;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Solaris,则返回true
*/
public static boolean isSolaris() {
return IS_OS_SOLARIS;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Sun OS,则返回true
*/
public static boolean isSunOS() {
return IS_OS_SUN_OS;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows,则返回true
*/
public static boolean isWindows() {
return IS_OS_WINDOWS;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows 2000,则返回true
*/
public static boolean isWindows2000() {
return IS_OS_WINDOWS_2000;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows 95,则返回true
*/
public static boolean isWindows95() {
return IS_OS_WINDOWS_95;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows 98,则返回true
*/
public static boolean isWindows98() {
return IS_OS_WINDOWS_98;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows ME,则返回true
*/
public static boolean isWindowsME() {
return IS_OS_WINDOWS_ME;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows NT,则返回true
*/
public static boolean isWindowsNT() {
return IS_OS_WINDOWS_NT;
}
/**
* 判断当前OS的类型。
*
*
* 如果不能取得系统属性os.name
(因为Java安全限制),则总是返回false
*
*
* @return 如果当前OS类型为Windows XP,则返回true
*/
public static boolean isWindowsXP() {
return IS_OS_WINDOWS_XP;
}
/**
* 取得OS的文件路径的分隔符(取自系统属性:file.separator
)。
*
*
* 例如:Unix为"/"
,Windows为"\\"
。
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getOSFileSeparator() {
return System.getProperty("file.separator");
}
/**
* 取得OS的文本文件换行符(取自系统属性:line.separator
)。
*
*
* 例如:Unix为"\n"
,Windows为"\r\n"
。
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getOSLineSeparator() {
return System.getProperty("line.separator");
}
/**
* 取得OS的搜索路径分隔符(取自系统属性:path.separator
)。
*
*
* 例如:Unix为":"
,Windows为";"
。
*
*
* @return 属性值,如果不能取得(因为Java安全限制)或值不存在,则返回null
。
*
* @since Java 1.1
*/
public static String getOSPathSeparator() {
return System.getProperty("path.separator");
}
}