package com.zhj.tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
/**
* 文件名:GetProperty.java
* 描述: 取得当前系统变量的程序。
*    java中的System.getProperty只是针对JVM来的,如果要取得系统环境变量,还要用到系统相关的函数。本程序先从JVM中取Key对应的Value,如果取不到再取系统环境变量
* 作者: 翟海军
*/
public class GetProperty {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String key=null;
if (args.length>0) key=args[0];
String s=getProperty(key);
System.out.println(s);
}
public static String getProperty(String key) throws IOException{
String value=null;
Properties pp = null;
if (key == null || key.length()<1) {
pp = System.getProperties();
System.out.println("未指定key,现列出所有JVM环境变量:");
pp.list(System.out);
value="未指定key,上面是所有JVM环境变量:";
return value;
} else {
String s = null;
value = System.getProperty(key);
if (s == null) {
String OS = System.getProperty("os.name").toLowerCase();
Process p = null;
if (OS.indexOf("windows") > -1) {
p = Runtime.getRuntime().exec("cmd /c set"); // Windows系列
} else if (OS.indexOf("linux") > -1 || OS.indexOf("aix") > -1
|| OS.indexOf("unix") > -1) {
p = Runtime.getRuntime().exec("/bin/sh -c set"); // Unix系列
}
BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
int i = line.indexOf("=");
if (i > -1) {
if(key.equalsIgnoreCase(line.substring(0, i))){
value = line.substring(i + 1);
break;
}
}
}
}
}
return value;
}
}