使⽤Java代码执⾏系统命令shell命令,并获取输出结果在 Java 代码中运⾏系统命令 / shell命令,并获取输出结果:
package com.xiets.shell;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.File;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args)throws Exception {
String result =execCmd("java -version", null);
System.out.println(result);
}
/**
* 执⾏系统命令, 返回执⾏结果
*
* @param cmd 需要执⾏的命令
* @param dir 执⾏命令的⼦进程的⼯作⽬录, null 表⽰和当前主进程⼯作⽬录相同
*/
public static String execCmd(String cmd, File dir)throws Exception {
StringBuilder result =new StringBuilder();
Process process = null;
BufferedReader bufrIn = null;
BufferedReader bufrError = null;
try{
// 执⾏命令, 返回⼀个⼦进程对象(命令在⼦进程中执⾏)
process = Runtime().exec(cmd, null, dir);
// ⽅法阻塞, 等待命令执⾏完成(成功会返回0)
process.waitFor();
// 获取命令执⾏结果, 有两个结果: 正常的输出和错误的输出(PS: ⼦进程的输出就是主进程的输⼊)
bufrIn =new BufferedReader(new InputStream(),"UTF-8"));
bufrError =new BufferedReader(new ErrorStream(),"UTF-8"));
// 读取输出
String line = null;
while((line = adLine())!= null){
result.append(line).append('\n');
}
while((line = adLine())!= null){shell代码
result.append(line).append('\n');
}
}finally{
closeStream(bufrIn);
closeStream(bufrError);
// 销毁⼦进程
if(process != null){
process.destroy();
}
}
// 返回执⾏结果
String();
}
private static void closeStream(Closeable stream){ if(stream != null){
try{
stream.close();
}catch(Exception e){
// nothing
}
}
}
}
控制台输出结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。