Java中获取操作系统的环境变量

  注意,这次是获取操作系统的环境变量,而不是获取JVM相关的一些变量(参见我之前的一篇Blog: 在Java中获取环境变量)。
  也许是为了营造JVM就是操作系统平台的气氛,抑或是为了强调Java的平台无关性,不知几时起Java已经把System.getenv(String)函数废弃了。所以一般来说Java只能获取它自己定义的一些变量,而无法与操作系统的环境变量交互,只能在运行靠java的“-D”参数来设置要传递给它的一些变量。
  所以唯一的办法只能先判断操作系统,然后用操作系统的命令来调出环境变量列表,设法获得该输出列表。下面转载来自 http://www.rgagnon.com/javadetails/java-0150.html的一个范例:
None.gif import java.io. * ;
None.gifimport java.util.
* ;
None.gif
ExpandedBlockStart.gifContractedBlock.gif
public   class  ReadEnv  dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif 
public static Properties getEnvVars() throws Throwable dot.gif{
InBlock.gif  Process p 
= null;
InBlock.gif  Properties envVars 
= new Properties();
InBlock.gif  Runtime r 
= Runtime.getRuntime();
InBlock.gif  String OS 
= System.getProperty("os.name").toLowerCase();
InBlock.gif  
// System.out.println(OS);
ExpandedSubBlockStart.gifContractedSubBlock.gif
  if (OS.indexOf("windows 9"> -1dot.gif{
InBlock.gif    p 
= r.exec( "command.com /c set" );
ExpandedSubBlockEnd.gif    }

InBlock.gif  
else if ( (OS.indexOf("nt"> -1)
InBlock.gif         
|| (OS.indexOf("windows 20"> -1 )
ExpandedSubBlockStart.gifContractedSubBlock.gif         
|| (OS.indexOf("windows xp"> -1) ) dot.gif{
InBlock.gif    
// thanks to JuanFran for the xp fix!
InBlock.gif
    p = r.exec( "cmd.exe /c set" );
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif  
else dot.gif{
InBlock.gif    
// our last hope, we assume Unix (thanks to H. Ware for the fix)
InBlock.gif
    p = r.exec( "env" );
ExpandedSubBlockEnd.gif    }

InBlock.gif  BufferedReader br 
= new BufferedReader
InBlock.gif     ( 
new InputStreamReader( p.getInputStream() ) );
InBlock.gif  String line;
ExpandedSubBlockStart.gifContractedSubBlock.gif  
while( (line = br.readLine()) != null ) dot.gif{
InBlock.gif   
int idx = line.indexOf( '=' );
InBlock.gif   String key 
= line.substring( 0, idx );
InBlock.gif   String value 
= line.substring( idx+1 );
InBlock.gif   envVars.setProperty( key, value );
InBlock.gif   
// System.out.println( key + " = " + value );
ExpandedSubBlockEnd.gif
   }

InBlock.gif  
return envVars;
ExpandedSubBlockEnd.gif  }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif  
public static void main(String args[]) dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif   
try dot.gif{
InBlock.gif     Properties p 
= ReadEnv.getEnvVars();
InBlock.gif     System.
out.println("the current value of TEMP is : " +
InBlock.gif        p.getProperty(
"TEMP"));
ExpandedSubBlockEnd.gif     }

ExpandedSubBlockStart.gifContractedSubBlock.gif   
catch (Throwable e) dot.gif{
InBlock.gif     e.printStackTrace();
ExpandedSubBlockEnd.gif     }

ExpandedSubBlockEnd.gif   }

ExpandedBlockEnd.gif  }

None.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值