国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

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

2019-11-26 14:50:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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+":盤(pán) 已使用 "+compare.intValue()+"%";     list.add(str);     }   }    return list; } //獲得cpu使用率 public static String getCpuRatioForWindows() {     try {       String procCmd = System.getenv("windir") + "http://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對(duì)漢字處理存在問(wèn)題(把一個(gè)漢字視為一個(gè)字節(jié)),因此在 包含漢字的字符串時(shí)存在隱患,現(xiàn)調(diào)整如下:  * @param src 要截取的字符串  * @param start_idx 開(kāi)始坐標(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地址:

private static String getIpAddress() throws UnknownHostException {     InetAddress address = InetAddress.getLocalHost();      return address.getHostAddress();   }

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

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)帳號(hào)

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

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

import java.util.Properties;     Properties props=System.getProperties(); //獲得系統(tǒng)屬性集  String osName = props.getProperty("os.name"); //操作系統(tǒng)名稱(chē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ī)范名稱(chēng) 
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)名稱(chēng) 
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ī)范名稱(chēng) 
java.class.version  Java 類(lèi)格式版本號(hào) 
java.class.path     Java 類(lèi)路徑 
java.library.path   加載庫(kù)時(shí)搜索的路徑列表 
java.io.tmpdir  默認(rèn)的臨時(shí)文件路徑 
java.compiler   要使用的 JIT 編譯器的名稱(chēng) 
java.ext.dirs   一個(gè)或多個(gè)擴(kuò)展目錄的路徑 
os.name     操作系統(tǒng)的名稱(chē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   用戶(hù)的賬戶(hù)名稱(chēng) 
user.home   用戶(hù)的主目錄 
user.dir    用戶(hù)的當(dāng)前工作目錄 

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东宁县| 高清| 崇文区| 和硕县| 嘉义市| 句容市| 河东区| 读书| 临湘市| 军事| 海兴县| 福安市| 习水县| 彩票| 广南县| 五家渠市| 镶黄旗| 饶河县| 彰化县| 石渠县| 西平县| 云和县| 两当县| 郴州市| 贵德县| 新河县| 神木县| 铜陵市| 米易县| 景东| 桓台县| 潢川县| 大足县| 濮阳市| 日照市| 阿拉善右旗| 东城区| 建瓯市| 英德市| 工布江达县| 德庆县|