java調用執行cmd命令


未經允許,禁止轉載!!!

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=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了 } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM