zoukankan      html  css  js  c++  java
  • 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了 } }
  • 相关阅读:
    在Linux中运行Nancy应用程序
    医疗行业信息化学习资源
    Windows Live Writer 的昨日荣光
    读书笔记:李叔同,说佛(上),为人十训
    使用Expression Tree构建动态LINQ查询
    读书笔记:季羡林关于如何做研究学问的心得
    XML序列化的时候如何支持Namespace
    Kafka Consumer
    Linux环境安装Golang
    Linux 下 zip 文件解压乱码如何解决
  • 原文地址:https://www.cnblogs.com/111testing/p/7551210.html
Copyright © 2011-2022 走看看