标签:
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