private void runByshcommand(String command) { try { System.out.println("开始执行命令....."); Process process =null; process = Runtime.getRuntime().exec(command); //不管是输出流还是错误流,都容易造成阻塞,造成死循环。建议另外弄个线程,这样不会对主程序造成影响。 InputStream pro_in=process.getInputStream();//得到终端窗口中输出的信息 InputStream pro_err=process.getErrorStream();//得到终端窗口中输出的错误流 new getOutputStreamThread(pro_in,"NORMAL").run();//调用start()方法,则会通过JVM找到run()方法 new getOutputStreamThread(pro_err,"ERROR").run(); process.waitFor(); // 销毁子进程 process.destroy(); process = null; System.out.println("命令执行成功"); } catch (Exception e) { e.printStackTrace(); } } public static class getOutputStreamThread extends Thread{ InputStream ins; String print_type; public getOutputStreamThread(InputStream is,String print_type){ this.ins=is; this.print_type=print_type; } public void run(){ String szstr=""; BufferedReader in=new BufferedReader(new InputStreamReader(ins)); try { while((szstr=in.readLine())!=null){ System.out.println(print_type+":"+szstr); } } catch (IOException e) { e.printStackTrace(); } } }