一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié)

使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié)

2020-01-20 11:42chenhua_1984 JAVA教程

這篇文章主要介紹了使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié),在服務(wù)器端一般經(jīng)常能夠用到,歡迎收藏,需要的朋友可以參考下

1.獲取CPU和內(nèi)存信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.List;
import mytools.com.sun.management.OperatingSystemMXBean;
import mytools.java.io.File;
import mytools.java.lang.management.ManagementFactory;
/**
 * 獲取windows系統(tǒng)信息(CPU,內(nèi)存,文件系統(tǒng))
 * @author libing
 *
 */
public class WindowsInfoUtil {
  private static final int CPUTIME = 500;
  private static final int PERCENT = 100;
  private static final int FAULTLENGTH = 10;
  public static void main(String[] args) {
  System.out.println(getCpuRatioForWindows());
  System.out.println(getMemery());
  System.out.println(getDisk());
 }
 //獲取內(nèi)存使用率
 public static String getMemery(){
 OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
 // 總的物理內(nèi)存+虛擬內(nèi)存
 long totalvirtualMemory = osmxb.getTotalSwapSpaceSize();
 // 剩余的物理內(nèi)存
 long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
 Double compare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100;
 String str="內(nèi)存已使用:"+compare.intValue()+"%";
 return str;
 }
 //獲取文件系統(tǒng)使用率
 public static List<String> getDisk() {
 // 操作系統(tǒng)
 List<String> list=new ArrayList<String>();
 for (char c = 'A'; c <= 'Z'; c++) {
  String dirName = c + ":/";
  File win = new File(dirName);
     if(win.exists()){
     long total=(long)win.getTotalSpace();
     long free=(long)win.getFreeSpace();
     Double compare=(Double)(1-free*1.0/total)*100;
     String str=c+":盤 已使用 "+compare.intValue()+"%";
     list.add(str);
     }
   }
    return list;
 }
 //獲得cpu使用率
 public static String getCpuRatioForWindows() {
     try {
       String procCmd = System.getenv("windir") + "//system32//wbem//wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
       // 取進(jìn)程信息
       long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
       Thread.sleep(CPUTIME);
       long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
       if (c0 != null && c1 != null) {
         long idletime = c1[0] - c0[0];
         long busytime = c1[1] - c0[1];
         return "CPU使用率:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%";
       } else {
         return "CPU使用率:"+0+"%";
       }
     } catch (Exception ex) {
       ex.printStackTrace();
       return "CPU使用率:"+0+"%";
     }
   }
 //讀取cpu相關(guān)信息
  private static long[] readCpu(final Process proc) {
    long[] retn = new long[2];
    try {
      proc.getOutputStream().close();
      InputStreamReader ir = new InputStreamReader(proc.getInputStream());
      LineNumberReader input = new LineNumberReader(ir);
      String line = input.readLine();
      if (line == null || line.length() < FAULTLENGTH) {
        return null;
      }
      int capidx = line.indexOf("Caption");
      int cmdidx = line.indexOf("CommandLine");
      int rocidx = line.indexOf("ReadOperationCount");
      int umtidx = line.indexOf("UserModeTime");
      int kmtidx = line.indexOf("KernelModeTime");
      int wocidx = line.indexOf("WriteOperationCount");
      long idletime = 0;
      long kneltime = 0;
      long usertime = 0;
      while ((line = input.readLine()) != null) {
        if (line.length() < wocidx) {
          continue;
        }
        // 字段出現(xiàn)順序:Caption,CommandLine,KernelModeTime,ReadOperationCount,
        // ThreadCount,UserModeTime,WriteOperation
        String caption =substring(line, capidx, cmdidx - 1).trim();
        String cmd = substring(line, cmdidx, kmtidx - 1).trim();
        if (cmd.indexOf("wmic.exe") >= 0) {
          continue;
        }
        String s1 = substring(line, kmtidx, rocidx - 1).trim();
        String s2 = substring(line, umtidx, wocidx - 1).trim();
        if (caption.equals("System Idle Process") || caption.equals("System")) {
          if (s1.length() > 0)
            idletime += Long.valueOf(s1).longValue();
          if (s2.length() > 0)
            idletime += Long.valueOf(s2).longValue();
          continue;
        }
        if (s1.length() > 0)
          kneltime += Long.valueOf(s1).longValue();
        if (s2.length() > 0)
          usertime += Long.valueOf(s2).longValue();
      }
      retn[0] = idletime;
      retn[1] = kneltime + usertime;
      return retn;
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      try {
        proc.getInputStream().close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return null;
  }
  /**
  * 由于String.subString對漢字處理存在問題(把一個(gè)漢字視為一個(gè)字節(jié)),因此在 包含漢字的字符串時(shí)存在隱患,現(xiàn)調(diào)整如下:
  * @param src 要截取的字符串
  * @param start_idx 開始坐標(biāo)(包括該坐標(biāo))
  * @param end_idx 截止坐標(biāo)(包括該坐標(biāo))
  * @return
  */
  private static String substring(String src, int start_idx, int end_idx) {
  byte[] b = src.getBytes();
  String tgt = "";
  for (int i = start_idx; i <= end_idx; i++) {
  tgt += (char) b[i];
  }
  return tgt;
 }
}

2.獲取本機(jī)的IP地址:

?
1
2
3
4
5
private static String getIpAddress() throws UnknownHostException {
    InetAddress address = InetAddress.getLocalHost();
 
    return address.getHostAddress();
  }

 
3.獲得網(wǎng)卡地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public static String getMACAddress(){
 
    String address = "";
 
    String os = System.getProperty("os.name");
    String osUser=System.getProperty("user.name");
    if (os != null && os.startsWith("Windows")) {
 
      try {
 
        String command = "cmd.exe /c ipconfig /all";
         
        Process p = Runtime.getRuntime().exec(command);
 
        BufferedReader br =new BufferedReader(new InputStreamReader(p.getInputStream()));
 
        String line;
 
        while ((line = br.readLine()) != null) {
 
          if (line.indexOf("Physical Address") > 0) {
 
            int index = line.indexOf(":");
 
            index += 2;
 
            address = line.substring(index);
 
            break;
 
          }
 
        }
 
        br.close();
 
        return address.trim();
 
      }
 
      catch (IOException e) {
      }
 
    }
    return address;
 
  }

4.獲得操作系統(tǒng)帳號

?
1
String osUser=System.getProperty("user.name");

5.獲得操作系統(tǒng)版本

?
1
2
3
4
5
6
import java.util.Properties; 
   
Properties props=System.getProperties(); //獲得系統(tǒng)屬性集 
String osName = props.getProperty("os.name"); //操作系統(tǒng)名稱 
String osArch = props.getProperty("os.arch"); //操作系統(tǒng)構(gòu)架 
String osVersion = props.getProperty("os.version"); //操作系統(tǒng)版本

   
6.一些常用的信息獲得方式整理

java.version    Java 運(yùn)行時(shí)環(huán)境版本 
java.vendor     Java 運(yùn)行時(shí)環(huán)境供應(yīng)商 
java.vendor.url     Java 供應(yīng)商的 URL 
java.home   Java 安裝目錄 
java.vm.specification.version   Java 虛擬機(jī)規(guī)范版本 
java.vm.specification.vendor    Java 虛擬機(jī)規(guī)范供應(yīng)商 
java.vm.specification.name  Java 虛擬機(jī)規(guī)范名稱 
java.vm.version     Java 虛擬機(jī)實(shí)現(xiàn)版本 
java.vm.vendor  Java 虛擬機(jī)實(shí)現(xiàn)供應(yīng)商 
java.vm.name    Java 虛擬機(jī)實(shí)現(xiàn)名稱 
java.specification.version  Java 運(yùn)行時(shí)環(huán)境規(guī)范版本 
java.specification.vendor   Java 運(yùn)行時(shí)環(huán)境規(guī)范供應(yīng)商 
java.specification.name     Java 運(yùn)行時(shí)環(huán)境規(guī)范名稱 
java.class.version  Java 類格式版本號 
java.class.path     Java 類路徑 
java.library.path   加載庫時(shí)搜索的路徑列表 
java.io.tmpdir  默認(rèn)的臨時(shí)文件路徑 
java.compiler   要使用的 JIT 編譯器的名稱 
java.ext.dirs   一個(gè)或多個(gè)擴(kuò)展目錄的路徑 
os.name     操作系統(tǒng)的名稱 
os.arch     操作系統(tǒng)的架構(gòu) 
os.version  操作系統(tǒng)的版本 
file.separator  文件分隔符(在 UNIX 系統(tǒng)中是“/”) 
path.separator  路徑分隔符(在 UNIX 系統(tǒng)中是“:”) 
line.separator  行分隔符(在 UNIX 系統(tǒng)中是“/n”) 
user.name   用戶的賬戶名稱 
user.home   用戶的主目錄 
user.dir    用戶的當(dāng)前工作目錄 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费看h片的网站 | 乌克兰18sex性hd | 天天av天天翘天天综合网 | 亚欧毛片基地国产毛片基地 | 欧美日韩精品乱国产 | 91最新入口| 日本xxx片免费高清在线 | 男人女人日皮视频 | 扒开老师两片湿漉的肉 | 久久偷拍免费2017 | 耽美调教高h | 波多野结衣被绝伦强在线观看 | 暖暖免费高清完整版观看日本 | 国精品午夜dy8888狼人 | 青青91 | 国产91精品在线播放 | 亚洲精品丝袜在线一区波多野结衣 | 欧美久久久久久 | www亚洲国产 | 被夫上司侵犯了中文字幕 | 99久久综合给久久精品 | 国产精品福利在线观看入口 | 户外露出野战hd | 欧美亚洲另类综合 | 国产美女做爰免费视频软件 | 九9热这里只有真品 | 水蜜桃一二二区视在线 | 国产一级一级片 | 丝袜高跟小说 | 妇乱子伦激情 | 男女车车好快的车车免费网站 | 成人免费视频一区二区 | 天天干夜夜添 | 久草在在线免视频在线观看 | 日本韩国一区二区三区 | 四虎永久网址在线观看 | 国产午夜精品久久理论片小说 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 国产亚洲精aa在线观看不卡 | 香蕉eeww99国产精选播放 | 欧美激烈精交gif动态图18p |