This commit is contained in:
Looly
2020-04-11 13:08:46 +08:00
parent 73fd3b849f
commit bc486cdac4
207 changed files with 1329 additions and 1355 deletions

View File

@@ -1,10 +1,10 @@
package cn.hutool.system;
import cn.hutool.core.net.NetUtil;
import java.io.Serializable;
import java.net.InetAddress;
import cn.hutool.core.net.NetUtil;
/**
* 代表当前主机的信息。
*/
@@ -16,8 +16,13 @@ public class HostInfo implements Serializable {
public HostInfo() {
final InetAddress localhost = NetUtil.getLocalhost();
HOST_NAME = localhost.getHostName();
HOST_ADDRESS = localhost.getHostAddress();
if(null != localhost){
HOST_NAME = localhost.getHostName();
HOST_ADDRESS = localhost.getHostAddress();
} else{
HOST_NAME = null;
HOST_ADDRESS = null;
}
}
/**

View File

@@ -1,5 +1,6 @@
package cn.hutool.system;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ReUtil;
import java.io.Serializable;
@@ -7,7 +8,7 @@ import java.io.Serializable;
/**
* 代表Java Implementation的信息。
*/
public class JavaInfo implements Serializable{
public class JavaInfo implements Serializable {
private static final long serialVersionUID = 1L;
private final String JAVA_VERSION = SystemUtil.get("java.version", false);
@@ -32,13 +33,11 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的版本(取自系统属性:<code>java.version</code>)。
*
*
* <p>
* 例如Sun JDK 1.4.2<code>"1.4.2"</code>
*
*
*
* @return 属性值如果不能取得因为Java安全限制或值不存在则返回<code>null</code>。
*
* @since Java 1.1
*/
public final String getVersion() {
@@ -47,15 +46,15 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的版本(取自系统属性:<code>java.version</code>)。
*
*
* <p>
* 例如:
*
*
* <ul>
* <li>JDK 1.2<code>1.2f</code>。</li>
* <li>JDK 1.3.1<code>1.31f</code></li>
* </ul>
*
*
* @return 属性值如果不能取得因为Java安全限制或值不存在则返回<code>0</code>。
*/
public final float getVersionFloat() {
@@ -64,19 +63,17 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的版本(取自系统属性:<code>java.version</code>java10及其之后的版本返回值为4位。
*
*
* <p>
* 例如:
*
*
* <ul>
* <li>JDK 1.2<code>120</code>。</li>
* <li>JDK 1.3.1<code>131</code></li>
* <li>JDK 11.0.2<code>1102</code></li>
* </ul>
*
*
*
* @return 属性值如果不能取得因为Java安全限制或值不存在则返回<code>0</code>。
*
* @since Java 1.1
*/
public final int getVersionInt() {
@@ -85,7 +82,7 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的版本的<code>float</code>值。
*
*
* @return Java版本的<code>float</code>值或<code>0</code>
*/
private float getJavaVersionAsFloat() {
@@ -95,14 +92,14 @@ public class JavaInfo implements Serializable{
String str = JAVA_VERSION;
str = ReUtil.get("^[0-9]{1,2}(\\.[0-9]{1,2})?", str,0);
str = ReUtil.get("^[0-9]{1,2}(\\.[0-9]{1,2})?", str, 0);
return Float.parseFloat(str);
return Float.parseFloat(str);
}
/**
* 取得当前Java impl.的版本的<code>int</code>值。
*
*
* @return Java版本的<code>int</code>值或<code>0</code>
*/
private int getJavaVersionAsInt() {
@@ -110,22 +107,14 @@ public class JavaInfo implements Serializable{
return 0;
}
String java_version = JAVA_VERSION;
String javaVersion = ReUtil.get("^[0-9]{1,2}(\\.[0-9]{1,2}){0,2}", JAVA_VERSION, 0);
java_version = ReUtil.get("^[0-9]{1,2}(\\.[0-9]{1,2}){0,2}", java_version,0);
String[] split = javaVersion.split("\\.");
String result = ArrayUtil.join(split, "");
String[] split = java_version.split("\\.");
String result = "";
for (int i = 0; i < split.length; i++) {
result = result + split[i];
}
//保证java10及其之后的版本返回的值为4位
if (split[0].length()>1 && result.length()!=4){
result = result + "0000";
result = result.substring(0,4);
//保证java10及其之后的版本返回的值为4位
if (split[0].length() > 1) {
result = (result + "0000").substring(0, 4);
}
return Integer.parseInt(result);
@@ -133,13 +122,11 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的厂商(取自系统属性:<code>java.vendor</code>)。
*
*
* <p>
* 例如Sun JDK 1.4.2<code>"Sun Microsystems Inc."</code>
*
*
*
* @return 属性值如果不能取得因为Java安全限制或值不存在则返回<code>null</code>。
*
* @since Java 1.1
*/
public final String getVendor() {
@@ -148,13 +135,11 @@ public class JavaInfo implements Serializable{
/**
* 取得当前Java impl.的厂商网站的URL取自系统属性<code>java.vendor.url</code>)。
*
*
* <p>
* 例如Sun JDK 1.4.2<code>"http://java.sun.com/"</code>
*
*
*
* @return 属性值如果不能取得因为Java安全限制或值不存在则返回<code>null</code>。
*
* @since Java 1.1
*/
public final String getVendorURL() {
@@ -163,11 +148,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.1,则返回<code>true</code>
*/
public final boolean isJava1_1() {
@@ -176,11 +160,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.2,则返回<code>true</code>
*/
public final boolean isJava1_2() {
@@ -189,11 +172,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.3,则返回<code>true</code>
*/
public final boolean isJava1_3() {
@@ -202,11 +184,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.4,则返回<code>true</code>
*/
public final boolean isJava1_4() {
@@ -215,11 +196,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.5,则返回<code>true</code>
*/
public final boolean isJava1_5() {
@@ -228,11 +208,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.6,则返回<code>true</code>
*/
public final boolean isJava1_6() {
@@ -241,11 +220,10 @@ public class JavaInfo implements Serializable{
/**
* 判断当前Java的版本。
*
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
*
* @return 如果当前Java版本为1.7,则返回<code>true</code>
*/
public final boolean isJava1_7() {
@@ -257,7 +235,6 @@ public class JavaInfo implements Serializable{
*
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
* @return 如果当前Java版本为1.8,则返回<code>true</code>
*/
@@ -271,7 +248,6 @@ public class JavaInfo implements Serializable{
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
* @return 如果当前Java版本为9则返回<code>true</code>
*/
public final boolean isJava9() {
@@ -284,7 +260,6 @@ public class JavaInfo implements Serializable{
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
* @return 如果当前Java版本为10则返回<code>true</code>
*/
public final boolean isJava10() {
@@ -297,7 +272,6 @@ public class JavaInfo implements Serializable{
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
* @return 如果当前Java版本为11则返回<code>true</code>
*/
public final boolean isJava11() {
@@ -310,7 +284,6 @@ public class JavaInfo implements Serializable{
* <p>
* 如果不能取得系统属性<code>java.version</code>因为Java安全限制则总是返回 <code>false</code>
*
*
* @return 如果当前Java版本为12则返回<code>true</code>
*/
public final boolean isJava12() {
@@ -319,9 +292,8 @@ public class JavaInfo implements Serializable{
/**
* 匹配当前Java的版本。
*
*
* @param versionPrefix Java版本前缀
*
* @return 如果版本匹配,则返回<code>true</code>
*/
private boolean getJavaVersionMatches(String versionPrefix) {
@@ -334,19 +306,17 @@ public class JavaInfo implements Serializable{
/**
* 判定当前Java的版本是否大于等于指定的版本号。
*
*
* <p>
* 例如:
*
*
*
*
* <ul>
* <li>测试JDK 1.2<code>isJavaVersionAtLeast(1.2f)</code></li>
* <li>测试JDK 1.2.1<code>isJavaVersionAtLeast(1.31f)</code></li>
* </ul>
*
*
*
* @param requiredVersion 需要的版本
*
* @return 如果当前Java版本大于或等于指定的版本则返回<code>true</code>
*/
public final boolean isJavaVersionAtLeast(float requiredVersion) {
@@ -355,19 +325,17 @@ public class JavaInfo implements Serializable{
/**
* 判定当前Java的版本是否大于等于指定的版本号。
*
*
* <p>
* 例如:
*
*
*
*
* <ul>
* <li>测试JDK 1.2<code>isJavaVersionAtLeast(120)</code></li>
* <li>测试JDK 1.2.1<code>isJavaVersionAtLeast(131)</code></li>
* </ul>
*
*
*
* @param requiredVersion 需要的版本
*
* @return 如果当前Java版本大于或等于指定的版本则返回<code>true</code>
*/
public final boolean isJavaVersionAtLeast(int requiredVersion) {
@@ -376,7 +344,7 @@ public class JavaInfo implements Serializable{
/**
* 将Java Implementation的信息转换成字符串。
*
*
* @return JVM impl.的字符串表示
*/
@Override

View File

@@ -1,59 +1,64 @@
package cn.hutool.system;
import java.io.Serializable;
import cn.hutool.core.io.FileUtil;
import java.io.Serializable;
/**
* 运行时信息,包括内存总大小、已用大小、可用大小等
* @author looly
*
* @author looly
*/
public class RuntimeInfo implements Serializable{
public class RuntimeInfo implements Serializable {
private static final long serialVersionUID = 1L;
private Runtime currentRuntime = Runtime.getRuntime();
private final Runtime currentRuntime = Runtime.getRuntime();
/**
* 获得运行时对象
*
* @return {@link Runtime}
*/
public final Runtime getRuntime(){
public final Runtime getRuntime() {
return currentRuntime;
}
/**
* 获得JVM最大内存
*
* @return 最大内存
*/
public final long getMaxMemory(){
public final long getMaxMemory() {
return currentRuntime.maxMemory();
}
/**
* 获得JVM已分配内存
*
* @return 已分配内存
*/
public final long getTotalMemory(){
public final long getTotalMemory() {
return currentRuntime.totalMemory();
}
/**
* 获得JVM已分配内存中的剩余空间
*
* @return 已分配内存中的剩余空间
*/
public final long getFreeMemory(){
public final long getFreeMemory() {
return currentRuntime.freeMemory();
}
/**
* 获得JVM最大可用内存
*
* @return 最大可用内存
*/
public final long getUsableMemory(){
public final long getUsableMemory() {
return currentRuntime.maxMemory() - currentRuntime.totalMemory() + currentRuntime.freeMemory();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();