packagechild;importjava.io.*;importjava.nio.CharBuffer;importjava.util.Arrays;public classProcessCommunication{public static voidmain(String[] args) {
System.out.println(System.getProperty("user.dir")); //D:\TMP\Eclipse\InternalValClu
File file = new File("../test.txt");try{if(!file.exists())
file.createNewFile();//会创建于一个文件,在D:\TMP\Eclipse\test.txt
} catch(IOException e2) {//TODO Auto-generated catch block
e2.printStackTrace();
}
System.out.println(file.getAbsolutePath());//、
try{
System.out.println(file.getCanonicalPath());//D:\TMP\Eclipse\test.txt
} catch(IOException e1) {
e1.printStackTrace();
}
System.out.println(file.getPath());//..\test.txt
System.out.println();
Runtime rt=Runtime.getRuntime();try{//执行一些命令,启动进程//Process exec = rt.exec("shutdown.exe -s -t 3000");
Process exec = rt.exec("shutdown -a");//rt.exec("mstsc");
exec.waitFor(); //当前进程阻塞,直到调用的进程运行结束。
System.out.println("exec.exitValue()="+exec.exitValue()); //正常结束时,子进程的返回值为0
Process exec1= rt.exec("javac -d . src/testExcel/D.java"); //执行编译D.java文件的命令
exec1.waitFor();
System.out.println(exec1.exitValue());
Process exec2= rt.exec("java testExcel/D"); //运行D.class对应的字节码文件
exec2.waitFor();
System.out.println("exec2.exitValue()="+exec2.exitValue());
OutputStream outputStream=exec2.getOutputStream();
InputStream inputStream=exec2.getInputStream();
BufferedReader reader= new BufferedReader( newInputStreamReader(inputStream));while(reader.ready())
System.out.println("reader.readLine()"+reader.readLine());byte[] b =new byte[100];
inputStream.read(b);
System.out.println("new String(b)"+new String(b,"utf-8"));
System.out.println("查看内存");
System.out.println(rt.freeMemory()+"\t"+rt.totalMemory()+"\t"+rt.maxMemory()/1024/8+"\t"+rt.availableProcessors());
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
ProcessBuilder pb= new ProcessBuilder("javac", "-d",".","src/testExcel/D.java");try{
Process p=pb.start();
p.waitFor();
System.out.println(p.exitValue());
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
ProcessBuilder pb2= new ProcessBuilder("java", "testExcel/D");try{
Process p2=pb2.start();
p2.waitFor();
System.out.println(p2.exitValue());
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}