JAVA获取系统相关信息
獲取JRE系統相關參數
?java 通過System.getProperties()獲取系統參數
? Properties props=System.getProperties(); //系統屬性
//???Set<Object> keySet = sysProperty.keySet();
//???for (Object object : keySet) {
//????String property = sysProperty.getProperty(object.toString());
//????System.out.println(object.toString()+" : "+property);
//???}
?? System.out.println("Java的運行環境版本:"+props.getProperty("java.version"));
?? System.out.println("Java的運行環境供應商:"+props.getProperty("java.vendor"));
?? System.out.println("Java供應商的URL:"+props.getProperty("java.vendor.url"));
?? System.out.println("Java的安裝路徑:"+props.getProperty("java.home"));
?? System.out.println("Java的虛擬機規范版本:"+props.getProperty("java.vm.specification.version"));
?? System.out.println("Java的虛擬機規范供應商:"+props.getProperty("java.vm.specification.vendor"));
?? System.out.println("Java的虛擬機規范名稱:"+props.getProperty("java.vm.specification.name"));
?? System.out.println("Java的虛擬機實現版本:"+props.getProperty("java.vm.version"));
?? System.out.println("Java的虛擬機實現供應商:"+props.getProperty("java.vm.vendor"));
?? System.out.println("Java的虛擬機實現名稱:"+props.getProperty("java.vm.name"));
?? System.out.println("Java運行時環境規范版本:"+props.getProperty("java.specification.version"));
?? System.out.println("Java運行時環境規范供應商:"+props.getProperty("java.specification.vender"));
?? System.out.println("Java運行時環境規范名稱:"+props.getProperty("java.specification.name"));
?? System.out.println("Java的類格式版本號:"+props.getProperty("java.class.version"));
?? System.out.println("Java的類路徑:"+props.getProperty("java.class.path"));
?? System.out.println("加載庫時搜索的路徑列表:"+props.getProperty("java.library.path"));
?? System.out.println("默認的臨時文件路徑:"+props.getProperty("java.io.tmpdir"));
?? System.out.println("一個或多個擴展目錄的路徑:"+props.getProperty("java.ext.dirs"));
?? System.out.println("操作系統的名稱:"+props.getProperty("os.name"));
?? System.out.println("操作系統的構架:"+props.getProperty("os.arch"));
?? System.out.println("操作系統的版本:"+props.getProperty("os.version"));
?? System.out.println("文件分隔符:"+props.getProperty("file.separator"));?? //在 unix 系統中是"/"
?? System.out.println("路徑分隔符:"+props.getProperty("path.separator"));?? //在 unix 系統中是":"
?? System.out.println("行分隔符:"+props.getProperty("line.separator"));?? //在 unix 系統中是"/n"
?? System.out.println("用戶的賬戶名稱:"+props.getProperty("user.name"));
?? System.out.println("用戶的主目錄:"+props.getProperty("user.home"));
?? System.out.println("用戶的當前工作目錄:"+props.getProperty("user.dir"));
??? http://www.blogjava.net/void241/archive/2009/06/04/279971.html
二、獲取系統環境變量
Map<String, String> getenv = System.getenv();
?
三、獲取IP、 計算機名、MAC、 硬盤卷序號
?
package?com.geocompass.geosearch.tools;import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.net.InetAddress;
import?java.net.NetworkInterface;
import?java.net.SocketException;
import?java.net.UnknownHostException;
import?java.util.Properties;
/**
?*?獲取當前系統信息
?*?@author?gxsn
?*
?*/
public?class?SystemInfo?{
????//當前實例
????private?static?SystemInfo?currentSystem=null;
????private??InetAddress?localHost=null;
????
????private?SystemInfo()
????{
????????try?{
????????????localHost?=?InetAddress.getLocalHost();
????????}?catch?(UnknownHostException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????}
????
????/**
?????*?單例模式獲取對象
?????*?@return
?????*/
????public?static?SystemInfo?getInstance()
????{
????????if(currentSystem==null)
????????????currentSystem=?new?SystemInfo();
????????return?currentSystem;
????}
????/**
?????*?本地IP
?????*?@return?IP地址
?????*/
????public?String?getIP()
????{
????????String?ip=localHost.getHostAddress();
????????return?ip;
????}
????/**
?????*?獲取用戶機器名稱
?????*?@return
?????*/
????public?String?getHostName()
????{
????????return?localHost.getHostName();
????}
????
????/**
?????*?獲取C盤卷?序列號
?????*?@return
?????*/
????public?String?getDiskNumber()
????{
??????????String?line?=?"";
??????????String?HdSerial?=?"";//記錄硬盤序列號
??????????try?{
???????????Process?proces?=?Runtime.getRuntime().exec("cmd?/c?dir?c:");//獲取命令行參數
???????????BufferedReader?buffreader?=?new?BufferedReader(
?????????????new?InputStreamReader(proces.getInputStream()));
???????????while?((line?=?buffreader.readLine())?!=?null)?{
????????????if?(line.indexOf("卷的序列號是?")?!=?-1)?{??//讀取參數并獲取硬盤序列號
?????????????HdSerial?=?line.substring(line.indexOf("卷的序列號是?")
???????????????+?"卷的序列號是?".length(),?line.length());
?????????????break;
????????????}
???????????}
??????????}?catch?(IOException?e)?{
???????????//?TODO?Auto-generated?catch?block
???????????e.printStackTrace();
??????????}
??????????return?HdSerial;
????}
????
????/**
?????*?獲取Mac地址
?????*?@return?Mac地址,例如:F0-4D-A2-39-24-A6
?????*/
????public?String?getMac()
????{
????????NetworkInterface?byInetAddress;
????????try?{
????????????byInetAddress?=?NetworkInterface.getByInetAddress(localHost);
????????????byte[]?hardwareAddress?=?byInetAddress.getHardwareAddress();
????????????return?getMacFromBytes(hardwareAddress);
????????}?catch?(SocketException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????????return?null;????????
????}
????
????/**
?????*?獲取當前系統名稱
?????*?@return?當前系統名,例如:?windows?xp
?????*/
????public?String?getSystemName()
????{
????????Properties?sysProperty?=?System.getProperties();
????????//系統名稱
????????String?systemName=sysProperty.getProperty("os.name");
????????return?systemName;
????}
????
????private??String?getMacFromBytes(byte[]?bytes)
????{
????????StringBuffer?mac=new?StringBuffer();
????????byte?currentByte;
????????boolean?first=false;
????????for?(byte?b?:?bytes)?{
????????????if(first)
????????????{
????????????????mac.append("-");????
????????????}
????????????currentByte=(byte)((b&240)>>4);
????????????mac.append(Integer.toHexString(currentByte));
????????????currentByte=(byte)(b&15);
????????????mac.append(Integer.toHexString(currentByte));
????????????first=true;
????????}
????????return?mac.toString().toUpperCase();
????}
}
四、執行系統命令 jar包
Sigar.jar? 參見:http://sourceforge.net/projects/sigar/files/
?
五、獲取端口號
?
? public static String getOpenPorts() {
??? String line = "";
??? String HdSerial = "";//記錄硬盤序列號
??? StringBuffer buf = new StringBuffer("");
??? try {
???? Process proces = Runtime.getRuntime().exec("cmd /c netstat -a");//獲取命令行參數
???? BufferedReader buffreader = new BufferedReader(
?????? new InputStreamReader(proces.getInputStream()));
???
???? while ((line = buffreader.readLine()) != null) {
????? buf.append(line+"\n");
????? System.out.println(line);
????? }
??? } catch (IOException e) {
???? // TODO Auto-generated catch block
???? e.printStackTrace();
??? }
??? return buf.toString();
?? }
?
?? VBS文件獲取硬盤系列號
?public static String getSerialNumber(String drive) {
??? String result = "";
????? try {
??????? File file = File.createTempFile("realhowto",".vbs");
??????? file.deleteOnExit();
??????? FileWriter fw = new java.io.FileWriter(file);
??????? String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
??????????????????? +"Set colDrives = objFSO.Drives\n"
??????????????????? +"Set objDrive = colDrives.item(\"" + drive + "\")\n"
??????????????????? +"Wscript.Echo objDrive.SerialNumber";? // see note
??????? fw.write(vbs);
??????? fw.close();
??????? Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
??????? BufferedReader input =
????????? new BufferedReader
??????????? (new InputStreamReader(p.getInputStream()));
??????? String line;
??????? while ((line = input.readLine()) != null) {
?????????? result += line;
??????? }
??????? input.close();
????? }
????? catch(Exception e){
????????? e.printStackTrace();
????? }
????? return result.trim();
??? }
?http://www.rgagnon.com/javadetails/java-0580.html
?http://zhkl0228.itpub.net/post/16467/407721
?
MI技巧-取網卡的MAC地址,CPU,主板,硬盤序列號
http://jishudaima.iteye.com/blog/918526
轉載于:https://www.cnblogs.com/wuhenke/archive/2011/11/19/2255400.html
總結
以上是生活随笔為你收集整理的JAVA获取系统相关信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xap packaging failed
- 下一篇: IOS 多线程的一些总结