欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2015年11月17日 15:30:32   作者:chenhua_1984  
這篇文章主要介紹了使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié),在服務(wù)器端一般經(jī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+":盤 已使用 "+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對漢字處理存在問題(把一個漢字視為一個字節(jié)),因此在 包含漢字的字符串時存在隱患,現(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地址:

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)帳號

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)名稱  
String osArch = props.getProperty("os.arch"); //操作系統(tǒng)構(gòu)架  
String osVersion = props.getProperty("os.version"); //操作系統(tǒng)版本

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

java.version    Java 運(yùn)行時環(huán)境版本 
java.vendor     Java 運(yùn)行時環(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)行時環(huán)境規(guī)范版本 
java.specification.vendor   Java 運(yùn)行時環(huán)境規(guī)范供應(yīng)商 
java.specification.name     Java 運(yùn)行時環(huán)境規(guī)范名稱 
java.class.version  Java 類格式版本號 
java.class.path     Java 類路徑 
java.library.path   加載庫時搜索的路徑列表 
java.io.tmpdir  默認(rèn)的臨時文件路徑 
java.compiler   要使用的 JIT 編譯器的名稱 
java.ext.dirs   一個或多個擴(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)前工作目錄 

相關(guān)文章

  • Java的方法重載與變量作用域簡介

    Java的方法重載與變量作用域簡介

    這篇文章主要介紹了Java的方法重載與變量作用域,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • linux用java -jar啟動jar包緩慢的問題

    linux用java -jar啟動jar包緩慢的問題

    這篇文章主要介紹了linux用java -jar啟動jar包緩慢的問題,具有很好的參考價值,希望對大家有所幫助,
    2023-09-09
  • 通過Java實(shí)現(xiàn)在Word中創(chuàng)建可填充表單

    通過Java實(shí)現(xiàn)在Word中創(chuàng)建可填充表單

    這篇文章主要為大家詳細(xì)介紹了如何通過Java代碼,以編程方式在Word中創(chuàng)建可填充表單,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Java使用quartz實(shí)現(xiàn)定時任務(wù)示例詳解

    Java使用quartz實(shí)現(xiàn)定時任務(wù)示例詳解

    這篇文章主要為大家介紹了Java使用quartz實(shí)現(xiàn)定時任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • java啟動線程的3種方式對比分析

    java啟動線程的3種方式對比分析

    這篇文章主要為大家對比分析了java啟動線程的3種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 快速解決commons-fileupload組件無法處理自定義head信息的bug

    快速解決commons-fileupload組件無法處理自定義head信息的bug

    問題在于fileupload組件解析完自定義的head節(jié)點(diǎn)后,卻忘記傳遞到FileItemStreamImpl中了,稍作修訂,即可修正該bug
    2013-08-08
  • Java中Request請求轉(zhuǎn)發(fā)詳解

    Java中Request請求轉(zhuǎn)發(fā)詳解

    這篇文章主要介紹了Java中Request請求轉(zhuǎn)發(fā)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • WebSocket整合SSM(Spring,Struts2,Maven)的實(shí)現(xiàn)示例

    WebSocket整合SSM(Spring,Struts2,Maven)的實(shí)現(xiàn)示例

    這篇文章主要介紹了WebSocket整合SSM(Spring,Struts2,Maven)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Spring配置文件解析之BeanDefinitionReader詳解

    Spring配置文件解析之BeanDefinitionReader詳解

    這篇文章主要介紹了Spring配置文件解析之BeanDefinitionReader詳解,ApplicationContext.xml配置文件解析成Document對象,真正對xml中元素解析的類是在BeanDefinitionDocumentReader的實(shí)現(xiàn)類中來完成的,需要的朋友可以參考下
    2024-02-02
  • Java實(shí)現(xiàn)讀取csv文件的兩種方式

    Java實(shí)現(xiàn)讀取csv文件的兩種方式

    這篇文章主要為大家詳細(xì)介紹了如何利用Java讀取csv文件的兩種方式,文中的示例代碼講解詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以了解一下
    2023-12-12

最新評論