OMG,到底在寻找什么..................
(构造一个完美的J2EE系统所需要的完整知识体系)
posts - 198,  comments - 37,  trackbacks - 0

Tiger系列一:从XML中加载属性
Tiger系列二:Tiger语言新特性

Tiger系列三:Annotation第一部分:使用内置的Annotation
Tiger系列四:Annotation第二部分:定制Annotation
Tiger系列五:访问环境变量和调用子进程

System.getenv()方法可以方便的访问平台的环境变量,但从一开始就遭到反对而被抛弃,因为该方法违背了“编写一次,随处运行”的原则。在Tiger版本中,又可以使用该方法了。

访问平台专有信息并不是一件容易的事。虽然可以使用 Runtime.exec() 创建进程,但由于平台之间的差异,构造参数集常常令人头痛不已。 Tiger 提供了新的 ProcessBuilder 类,使得访问平台专有信息更加容易。

 

1 访问环境变量

System.getenv() 有两种方法:

1 )指定环境变量名来获得环境变量值,如下面的例子:

public class EnvTest {
       
public static void
main(String[] args) {
           System.out.println(System.getenv(
" JAVA_HOME "
));
       }
}

输出的结果可能是:

c:\jdk1. 5
2 返回所有环境变量的 Map 对象,下面的例子输出所有环境变量名和值:

public class EnvDump {
       
public static void
 main(String[] args) {
              
for
 (Entry entry : System.getenv().entrySet()) {
                System.out.println(entry.getKey() 
+ "=" +
 entry.getValue());
              }
       }
}


2
ProcessBuilder

l         早期 Java 版本允许使用 Runtime . exec() 方法创建本机进程,该方法仍然有效,但是因为使用 String 数组作为参数、以 File 参数作为工作目录,所以定制子进程比较困难

l         使用 新的 ProcessBuilder 可以简化这个过程

l         下面是一个启动 EditPlus 的简单的例子:

public class ProcessTest {
       
public static voidmain(String[] args) throws
IOException {
          Process p
= newProcessBuilder(“C:\\ProgramFiles\\EditPlus2
\\editplus.exe”).start();
       }
}
l         下面是在执行命令时指定参数的例子:
public class ProcessTest {
       
public static void main(String[] args) throws
 IOException {
              Process p 
= new ProcessBuilder("ping""sina.com.cn"
).start();
              InputStream is 
=
 p.getInputStream();
              BufferedReader br 
= new BufferedReader(new
 InputStreamReader(is));
              String line;
              
while ((line = br.readLine()) != null
) {
                System.out.println(line);
              }
       }
}

ProcessBuilder 提供了 directory() 方法改变进程的工作目录, 使用 environment() 方法在进程空间中添加和删除环境变量 ,下面是来自 JDK5 的例子:
 ProcessBuilder pb = new ProcessBuilder("myCommand""myArg1""myArg2");
 Map
<String, String> env =
 pb.environment();
 env.put(
"VAR1""myValue"
);
 env.remove(
"OTHERVAR"
);
 env.put(
"VAR2", env.get("VAR1"+ "suffix"
);
 pb.directory(
"myDir"
);
 Process p 
=
 pb.start();
posted on 2006-05-09 14:27 OMG 阅读(262) 评论(0)  编辑  收藏 所属分类: Tiger

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(1)

随笔分类

随笔档案

IT风云人物

文档

朋友

相册

经典网站

搜索

  •  

最新评论

阅读排行榜

评论排行榜