獲取你的JVM系統(tǒng)環(huán)境屬性 Java的 Writer once run anywhere 口號的確讓我們領略到了Java的神奇 也成為SUN宣傳Java的金字招牌 拂開這層神秘的面紗 我們不難發(fā)現(xiàn)其核心是運行在各種操作系統(tǒng)中的JVM(Java虛擬機)在發(fā)揮著重要的作用 Java虛擬機允許我們的純java類可以達到 一次編寫 到處運行 每個安裝在不同操作系統(tǒng)的Java虛擬機負責著Java程序與操作系統(tǒng)之間的工作 因此每個Java虛擬機的系統(tǒng)環(huán)境屬性是不同的 我們可以通過訪問Java虛擬機的系統(tǒng)屬性來獲知一些關于當前操作系統(tǒng)的一些基本信息 這些信息的價值有時是非常重要的 標準SDK中提供了java lang System類 這個類定義了一個對系統(tǒng)設備(包括系統(tǒng)屬性和系統(tǒng)輸入輸出數(shù)據(jù)流)的 與平臺無關的接口 方法getProperties()返回一個java util Property對象 對象中存放了JVM的系統(tǒng)屬性列表 我們可以通過這個列表來得到java虛擬機的一些系統(tǒng)屬性 下面的例子中 將介紹如何實現(xiàn)獲取JVM系統(tǒng)屬性的功能 類設計 設計SystemInfo類 用來獲取系統(tǒng)的屬性 并打印輸出到標準輸出 首先我們將設計一個getSystemProperty()方法 該方法將調(diào)用java lang System getProperties()返回一個系統(tǒng)屬性列表 在main()函數(shù)中 將系統(tǒng)屬性的關鍵字和屬性描述放到一個Hashtable結構中 通過遍歷這個結構 獲取系統(tǒng)屬性值 類結構圖如下 //package java;import java lang System;import java util Properties;import java util Hashtable;import java util Enumeration;public class SystemInfo{//存放JVM獲得的系統(tǒng)屬性static private Properties _property; //Main functionpublic static void main(String[] args){getSystemProperty();Hashtable hashKey;hashKey=new Hashtable();//將系統(tǒng)信息的關鍵字和標題放到hashtablehashKey put( java home Java安裝目錄 );hashKey put( java class path 裝載類的路徑 );hashKey put( java specification version Java API 規(guī)范的版本 );hashKey put( java specification vendor Java API 規(guī)范的廠商 );hashKey put( java specification name Java API 規(guī)范的名稱 );hashKey put( java version Java API 實現(xiàn)的版本 );hashKey put( java vendor Java API 實現(xiàn)的廠商 );hashKey put( java vendor url Java API 規(guī)范廠商的URL );hashKey put( java vm specification version Java虛擬機規(guī)范的版本 );hashKey put( java vm specification vendor Java虛擬機規(guī)范的廠商 );hashKey put( java vm specification name Java虛擬機規(guī)范的名稱 );hashKey put( java vm version Java虛擬機實現(xiàn)的版本 );hashKey put( java vm vendor Java虛擬機實現(xiàn)的廠商 );hashKey put( java vm name Java虛擬機實現(xiàn)的名稱 );hashKey put( java class version Java類文件格式的版本 );hashKey put( os name 主機操作系統(tǒng)的名稱 );hashKey put( os arch 主機操作系統(tǒng)的體系結構 );hashKey put( os version 主機操作系統(tǒng)的版本 );hashKey put( file separator 平臺目錄的分隔符 );hashKey put( path separator 平臺路徑的分隔符 );hashKey put( line separator 平臺文本行的分隔符 );hashKey put( user name 當前用戶的帳戶名稱 );hashKey put( user home 當前用戶的根目錄 );hashKey put( user dir 當前工作目錄 );Enumeration enum;String propertyKey;enum=hashKey keys();while(enum hasMoreElements()){propertyKey=(String)enum nextElement(); System out println((String)hashKey get(propertyKey)+ : +_property getProperty(propertyKey));}}/** * 獲得系統(tǒng)屬性列表 * @return Properties*/static public Properties getSystemProperty(){_property=System getProperties();return _property;}}運行結果 lishixinzhi/Article/program/Java/hx/201311/25847
成都創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元大田做網(wǎng)站,已為上家服務,為大田各地企業(yè)和個人服務,聯(lián)系電話:13518219792
一、 原理簡介
我們獲取jvm系統(tǒng)屬性的時候,我們都是通過
System.getProperty(“paramName”),當我們再仔細看下System對象的時候,我們發(fā)現(xiàn)還有個getProperties方法。閱讀下說明,果然是返回當前JVM的系統(tǒng)屬性。
二、 編寫JSP
只需要把下面內(nèi)容拷貝到jsp頁面中,并把該jsp放到應用中即可,具體內(nèi)容如下:
%
/*
列出當前系統(tǒng)中的參數(shù)
*/
%
%@ page contentType="text/html;charset=UTF-8" pageEncoding="GBK" errorPage="../include/error.jsp"%
!------- IMPORTS BEGIN ------------
%@ page import="java.util.Properties" %
%@ page import="java.util.Iterator" %
%@ page import="java.util.Map" %
%@ page import="java.util.Map.Entry" %
!------- IMPORTS END ------------
!-- 頁面登錄信息,常量獲取信息--
%!boolean IS_DEBUG = false;%
%
//1.獲取參數(shù)
//2.權限判斷
//3.邏輯操作
//獲取當前系統(tǒng)的內(nèi)存情況
Runtime currRuntime = Runtime.getRuntime();
currRuntime.gc();
long nTotalMemory = currRuntime.totalMemory();
long nFreeMemoy = currRuntime.freeMemory();
//把單位從字節(jié)轉化為兆
String sSystemTotalMemoy = (nTotalMemory/1024/1024) + "M";
String sFreeSystemMemoy = (nFreeMemoy/1024/1024) + "M";
%
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
title當前系統(tǒng)中的參數(shù)/title
style
.td_bg_color{
background-color:#FFFFFF;
}
.td_padding_left{
padding-left:10px;
}
/style
/head
body
table border="0" cellspacing="1" cellpadding="0" width="100%" style="background-color:#d1d6e9;"
tr
td colspan="3"當前系統(tǒng)的中參數(shù)列表,即[System.getProperties()]獲取的值為/td
/tr
tr
td width="60px"序號/td
td width="300px"名稱/td
td值/td
/tr
%
//打印出系統(tǒng)的屬性值
int nIndex = 0;
Properties properties = System.getProperties();
if(properties!=null){
Iterator iterator = properties.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry aEntry = (Entry) iterator.next();
if (aEntry == null) {
continue;
}
nIndex ++;
%
tr
td%=nIndex%/td
td class="td_bg_color td_padding_left"%=aEntry.getKey()%/td
td class="td_bg_color td_padding_left"%=aEntry.getValue()%/td
/tr
%
}//end while
}else{//end if
%
tr
td colspan="3"
span style="margin-right:20px;"當前系統(tǒng)對象[System]中沒有屬性./span
/td
/tr
%
}//end else
%
tr
td%=nIndex++%/td
td class="td_bg_color td_padding_left"總共內(nèi)存/td
td class="td_bg_color td_padding_left"%=sSystemTotalMemoy%/td
/tr
tr
td%=nIndex++%/td
td class="td_bg_color td_padding_left"空閑內(nèi)存/td
td class="td_bg_color td_padding_left"%=sFreeSystemMemoy%/td
/tr
/table
/body
/html
不是文件,這個是JVM啟動時的參數(shù)列表。
Properties props=System.getProperties(); //系統(tǒng)屬性
props.getProperty("java.version");具體有那些屬性,參照下邊。
java.version Java 運行時環(huán)境版本
java.vendor Java 運行時環(huán)境供應商
java.vendor.url Java 供應商的 URL
java.home Java 安裝目錄
java.vm.specification.version Java 虛擬機規(guī)范版本
java.vm.specification.vendor Java 虛擬機規(guī)范供應
java.vm.specification.name Java 虛擬機規(guī)范名稱
java.vm.version Java 虛擬機實現(xiàn)版本
java.vm.vendor Java 虛擬機實現(xiàn)供應商
java.vm.name Java 虛擬機實現(xiàn)名稱
java.specification.version Java 運行時環(huán)境規(guī)范版本
java.specification.vendor Java 運行時環(huán)境規(guī)范供應商
java.specification.name Java 運行時環(huán)境規(guī)范名稱
java.class.version Java 類格式版本號
java.class.path Java 類路徑
java.library.path 加載庫時搜索的路徑列表
java.io.tmpdir 默認的臨時文件路徑
java點抗 piler 要使用的 JIT 編譯器的名稱
java.ext.dirs 一個或多個擴展目錄的路徑
os.name 操作系統(tǒng)的名稱
os.arch 操作系統(tǒng)的架構
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 用戶的當前工作目錄
讀:
寫:
System.setProperties(props);
簡述properties文件的結構和基本用法
結構:擴展名為properties的文件,內(nèi)容為key、value的映射,例如”a=2″
用法: