Process可以用来开一个子进程,调用其他程序。
假设调用app.exe 工作目录./dir 命令行参数 -arg1=1 -arg2=2 环境变量envp1=e1 envp2=e2
调用方法为
import java.io.*;
public class YccRuntime {
public static void main(String[] arg) throws Exception {
Runtime r = Runtime.getRuntime();
//参数1 指令 参数2 环境变量(没有就设置为null) 参数3 工作目录
Process p = r.exec("app.exe -arg1=1 -arg2=2", new String[]{"envp1=e1","envp2=e2"}, new File(".\\dir\\"));
//获取进程的输入输出流,由于windows默认编码为gbk,因此需要特别设置一下编码,不然输出中文会出现乱码
//out输出流,向子进程写入数据
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p.getOutputStream(), "GBK"));
//in输入流,获取子进程的输出
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream(), "GBK"));
//err输入流,获取子进程打印的错误信息
BufferedReader err