java調用執行cmd命令
阿新 • • 發佈:2017-09-19
pla println output ces 執行cmd console null catch director
未經允許,禁止轉載!!!
package practice; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class cmdadb { public void executeCMDconsole(String cmd) { //此方法為打印日誌到控制臺!!!!!!!!!!!! //此方法跑成功!!!System.out.println("在cmd裏面輸入"+cmd); Process p; try { p = Runtime.getRuntime().exec(cmd); System.out.println(":::::::::::::::::::開始在控制臺打印日誌::::::::::::::::::::::>>>>>>"); //p.waitFor(); BufferedReader bReader=newBufferedReader(new InputStreamReader(p.getInputStream(),"gbk")); String line=null; while((line=bReader.readLine())!=null) System.out.println(line); } catch (IOException e) { e.printStackTrace(); } } public String executeCMDfile(String[] cmmands, String logToFile, String dirTodoCMD ) throwsIOException { //此方法為輸出日誌到指定文件夾!!!!!!!!!!!! //此方法跑成功!!! //如果 String cmmand 那麼 String cmmand = "adb logcat -v time > d:/adb.log"; //String[] cmmands 所以 String commands[] = { "adb", "logcat","-v","time"}; //String logToFile 將日誌保存到logToFile //String dirTodoCMD 在dirTodoCMD執行cmd命令 //由於將日誌輸出到文件裡面了,就不能再將日誌輸出到console了 try { ProcessBuilder builder = new ProcessBuilder(cmmands); if (dirTodoCMD != null) builder.directory(new File(dirTodoCMD)); builder.redirectErrorStream(true); builder.redirectOutput(new File(logToFile)); Process process = builder.start(); process.waitFor(); // 得到命令執行後的結果 InputStream is = process.getInputStream(); BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "gbk")); String line = null; StringBuffer sbBuffer = new StringBuffer(); while ((line = buffer.readLine()) != null) { sbBuffer.append(line); } is.close(); return sbBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
public static void main(String[] args) throws IOException { //String cmd="D:/Android/android-sdk-windows/platform-tools/adb logcat -v time"; //String cmd2="adb devices"; //String cmd3="adb logcat -v time"; //String cmd4="adb logcat -v time > d:/adb.log"; cmdadb adbc = new cmdadb(); adbc.executeCMDconsole("adb logcat -v time"); String commands[] = { "adb", "logcat","-v","time"}; adbc.executeCMDfile(commands, "D:/adb.logs", "C:/Users/wb-cjz286752"); //System.out.println(result);由於將日誌輸出到文件裡面了,就不能再將日誌輸出到console了 } }
java調用執行cmd命令