try { p = Runtime.getRuntime().exec(cmd); System.out.println( ":::::::::::::::::::开始在控制台打印日志::::::::::::::::::::::>>>>>>" ); // p.waitFor(); BufferedReader bReader= new BufferedReader( 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 ) throws IOException { // 此方法为輸出日志到指定文件夹!!!!!!!!!!!! // 此方法跑成功!!! // 如果 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了