systemutils.java
来自「JAVA 文章管理系统源码」· Java 代码 · 共 887 行 · 第 1/3 页
JAVA
887 行
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
/**
* <p>Is <code>true</code> if this is OS/2.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
/**
* <p>Is <code>true</code> if this is Solaris.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
/**
* <p>Is <code>true</code> if this is SunOS.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
/**
* <p>Is <code>true</code> if this is Windows.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS = getOSMatches("Windows");
/**
* <p>Is <code>true</code> if this is Windows 2000.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_2000 = getOSMatches("Windows", "5.0");
/**
* <p>Is <code>true</code> if this is Windows 95.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_95 = getOSMatches("Windows 9", "4.0");
// JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
/**
* <p>Is <code>true</code> if this is Windows 98.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_98 = getOSMatches("Windows 9", "4.1");
// JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
/**
* <p>Is <code>true</code> if this is Windows ME.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_ME = getOSMatches("Windows", "4.9");
// JDK 1.2 running on WindowsME may return 'Windows 95', hence the above
/**
* <p>Is <code>true</code> if this is Windows NT.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_NT = getOSMatches("Windows NT");
// Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2 problem
/**
* <p>Is <code>true</code> if this is Windows XP.</p>
*
* <p>The field will return <code>false</code> if <code>OS_NAME</code> is
* <code>null</code>.</p>
*
* @since 2.0
*/
public static final boolean IS_OS_WINDOWS_XP = getOSMatches("Windows", "5.1");
// Windows XP returns 'Windows 2000' just for fun...
//-----------------------------------------------------------------------
/**
* <p>SystemUtils instances should NOT be constructed in standard
* programming. Instead, the class should be used as
* <code>SystemUtils.FILE_SEPARATOR</code>.</p>
*
* <p>This constructor is public to permit tools that require a JavaBean
* instance to operate.</p>
*/
public SystemUtils() {
}
//-----------------------------------------------------------------------
/**
* <p>Gets the Java version number as a <code>float</code>.</p>
*
* <p>Example return values:</p>
* <ul>
* <li><code>1.2f</code> for JDK 1.2
* <li><code>1.31f</code> for JDK 1.3.1
* </ul>
*
* @return the version, for example 1.31f for JDK 1.3.1
* @deprecated Use {@link #JAVA_VERSION_FLOAT} instead.
* Method will be removed in Commons Lang 3.0.
*/
public static float getJavaVersion() {
return JAVA_VERSION_FLOAT;
}
/**
* <p>Gets the Java version number as a <code>float</code>.</p>
*
* <p>Example return values:</p>
* <ul>
* <li><code>1.2f</code> for JDK 1.2
* <li><code>1.31f</code> for JDK 1.3.1
* </ul>
*
* <p>Patch releases are not reported.
* Zero is returned if {@link #JAVA_VERSION} is <code>null</code>.</p>
*
* @return the version, for example 1.31f for JDK 1.3.1
*/
private static float getJavaVersionAsFloat() {
if (JAVA_VERSION == null) {
return 0f;
}
String str = JAVA_VERSION.substring(0, 3);
if (JAVA_VERSION.length() >= 5) {
str = str + JAVA_VERSION.substring(4, 5);
}
return Float.parseFloat(str);
}
/**
* <p>Gets the Java version number as an <code>int</code>.</p>
*
* <p>Example return values:</p>
* <ul>
* <li><code>120</code> for JDK 1.2
* <li><code>131</code> for JDK 1.3.1
* </ul>
*
* <p>Patch releases are not reported.
* Zero is returned if {@link #JAVA_VERSION} is <code>null</code>.</p>
*
* @return the version, for example 131 for JDK 1.3.1
*/
private static int getJavaVersionAsInt() {
if (JAVA_VERSION == null) {
return 0;
}
String str = JAVA_VERSION.substring(0, 1);
str = str + JAVA_VERSION.substring(2, 3);
if (JAVA_VERSION.length() >= 5) {
str = str + JAVA_VERSION.substring(4, 5);
} else {
str = str + "0";
}
return Integer.parseInt(str);
}
/**
* <p>Decides if the java version matches.</p>
*
* @param versionPrefix the prefix for the java version
* @return true if matches, or false if not or can't determine
*/
private static boolean getJavaVersionMatches(String versionPrefix) {
if (JAVA_VERSION == null) {
return false;
}
return JAVA_VERSION.startsWith(versionPrefix);
}
/**
* <p>Decides if the operating system matches.</p>
*
* @param osNamePrefix the prefix for the os name
* @return true if matches, or false if not or can't determine
*/
private static boolean getOSMatches(String osNamePrefix) {
if (OS_NAME == null) {
return false;
}
return OS_NAME.startsWith(osNamePrefix);
}
/**
* <p>Decides if the operating system matches.</p>
*
* @param osNamePrefix the prefix for the os name
* @param osVersionPrefix the prefix for the version
* @return true if matches, or false if not or can't determine
*/
private static boolean getOSMatches(String osNamePrefix, String osVersionPrefix) {
if (OS_NAME == null || OS_VERSION == null) {
return false;
}
return OS_NAME.startsWith(osNamePrefix) && OS_VERSION.startsWith(osVersionPrefix);
}
//-----------------------------------------------------------------------
/**
* <p>Gets a System property, defaulting to <code>null</code> if the property
* cannot be read.</p>
*
* <p>If a <code>SecurityException</code> is caught, the return
* value is <code>null</code> and a message is written to <code>System.err</code>.</p>
*
* @param property the system property name
* @return the system property value or <code>null</code> if a security problem occurs
*/
private static String getSystemProperty(String property) {
try {
return System.getProperty(property);
} catch (SecurityException ex) {
// we are not allowed to look at this property
System.err.println(
"Caught a SecurityException reading the system property '" + property
+ "'; the SystemUtils property value will default to null."
);
return null;
}
}
/**
* <p>Is the Java version at least the requested version.</p>
*
* <p>Example input:</p>
* <ul>
* <li><code>1.2f</code> to test for JDK 1.2</li>
* <li><code>1.31f</code> to test for JDK 1.3.1</li>
* </ul>
*
* @param requiredVersion the required version, for example 1.31f
* @return <code>true</code> if the actual version is equal or greater
* than the required version
*/
public static boolean isJavaVersionAtLeast(float requiredVersion) {
return (JAVA_VERSION_FLOAT >= requiredVersion);
}
/**
* <p>Is the Java version at least the requested version.</p>
*
* <p>Example input:</p>
* <ul>
* <li><code>120</code> to test for JDK 1.2 or greater</li>
* <li><code>131</code> to test for JDK 1.3.1 or greater</li>
* </ul>
*
* @param requiredVersion the required version, for example 131
* @return <code>true</code> if the actual version is equal or greater
* than the required version
* @since 2.0
*/
public static boolean isJavaVersionAtLeast(int requiredVersion) {
return (JAVA_VERSION_INT >= requiredVersion);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?