标签:
Runtime 封装着java程序的运行时环境。通过Runtime实例,java应用能够与其运行的环境连接。Runtime在jvm中保持一个单例,所以不能通过Runtime类的构造函数。只能通过Runtime.getRuntime()来获的当前Runtime的一个实例。获得Runtime实例后,就可以通过Runtime的exec()方法在当前jvm进程外启动其他进程了。很常见的一个应用就是,启动浏览器进程来显示一个程序的帮助页面。
在Runtime类中存在四个exec()重载方法.
package com.yiibai;
public class RuntimeDemo {
public static void main(String[] args) {
try {
// print a message
System.out.println("Executing notepad.exe");
// create a process and execute notepad.exe
Process process = Runtime.getRuntime().exec("notepad.exe");
// print another message
System.out.println("Notepad should now open.");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class JavaExeBat
{
public static void main(String[] args)
{
Process p;
//test.bat中的命令是ipconfig/all
String cmd="c:\\test\\test.bat";
try
{
//执行命令
p = Runtime.getRuntime().exec(cmd);
//取得命令结果的输出流
InputStream fis=p.getInputStream();
//用一个读输出流类去读
InputStreamReader isr=new InputStreamReader(fis);
//用缓冲器读行
BufferedReader br=new BufferedReader(isr);
String line=null;
//直到读完为止
while((line=br.readLine())!=null)
{
System.out.println(line);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
1.不要试图对exec()执行的程序异步取得返回参数;
2.及时得处理程序的输入和输出(即使你不用这些数据),否则会出现难以预料的后果;
3.不要把exec()当作一个shell的命令行,exec()只能执行一个程序。有个比较好的解决方案,在linux里可以利用sh -c命令来模拟一个命令行,在windows中则是cmd /c。
标签:
原文地址:http://blog.csdn.net/xinyuan_java/article/details/50979666