最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析

 更新時間:2020年07月28日 11:58:54   作者:張志勇-  
這篇文章主要介紹了Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一般java在執(zhí)行CMD命令時,通常是使用Runtime.getRuntime.exec(command)來執(zhí)行的,這個方法有兩種細(xì)節(jié)要注意:

1.一般執(zhí)行方法,代碼如下,這種方法有時執(zhí)行exe時會卡在那里。

//一般的執(zhí)行方法,有時執(zhí)行exe會卡在那  stmt要執(zhí)行的命令
  public static void executive(String stmt) throws IOException, InterruptedException {
    Runtime runtime = Runtime.getRuntime(); //獲取Runtime實(shí)例
    //執(zhí)行命令
    try {
      String[] command = {"cmd", "/c", stmt};
      Process process = runtime.exec(command);
      // 標(biāo)準(zhǔn)輸入流(必須寫在 waitFor 之前)
      String inStr = consumeInputStream(process.getInputStream());
      // 標(biāo)準(zhǔn)錯誤流(必須寫在 waitFor 之前)
      String errStr = consumeInputStream(process.getErrorStream());
      new ProcessClearStream(process.getInputStream(), "INFO").start();
      new ProcessClearStream(process.getErrorStream(), "ERROR").start();
      int proc = process.waitFor();
      InputStream errorStream = process.getErrorStream(); //若有錯誤信息則輸出
      if (proc == 0) {
        System.out.println("執(zhí)行成功");
      } else {
        System.out.println("執(zhí)行失敗" + errStr);
      }
    } catch (IOException | InterruptedException e) {
      e.printStackTrace();
    }
  }

  /**
   * 消費(fèi)inputstream,并返回
   */
  public static String consumeInputStream(InputStream is) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(is,"GBK"));
    String s;
    StringBuilder sb = new StringBuilder();
    while ((s = br.readLine()) != null) {
      System.out.println(s);
      sb.append(s);
    }
    return sb.toString();
  }

2.第二種方法是先生成一個緩存文件,用來緩存執(zhí)行過程中輸出的信息,這樣在執(zhí)行命令的時候不會卡。代碼如下:

//這個方法比第一個好,執(zhí)行時不會卡 stmt要執(zhí)行的命令
  public static void aaa(String stam){
    BufferedReader br = null;
    try {
      File file = new File("D:\\daemonTmp");
      File tmpFile = new File("D:\\daemonTmp\\temp.tmp");//新建一個用來存儲結(jié)果的緩存文件
      if (!file.exists()){
        file.mkdirs();
      }
      if(!tmpFile.exists()) {
        tmpFile.createNewFile();
      }
      ProcessBuilder pb = new ProcessBuilder().command("cmd.exe", "/c", stam).inheritIO();
      pb.redirectErrorStream(true);//這里是把控制臺中的紅字變成了黑字,用通常的方法其實(shí)獲取不到,控制臺的結(jié)果是pb.start()方法內(nèi)部輸出的。
      pb.redirectOutput(tmpFile);//把執(zhí)行結(jié)果輸出。
      pb.start().waitFor();//等待語句執(zhí)行完成,否則可能會讀不到結(jié)果。
      InputStream in = new FileInputStream(tmpFile);
      br= new BufferedReader(new InputStreamReader(in));
      String line = null;
      while((line = br.readLine()) != null) {
        System.out.println(line);
      }
      br.close();
      br = null;
      tmpFile.delete();//卸磨殺驢。
      System.out.println("執(zhí)行完成");
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if(br != null) {
        try {
          br.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA部署Tomcat的超詳細(xì)圖文教程

    IDEA部署Tomcat的超詳細(xì)圖文教程

    最近迫于無奈從我哪破舊的Eclipse轉(zhuǎn)換到了IDEA,然后就是超多的不習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于IDEA部署Tomcat的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Java 批量獲取地址間距離工具(支持中轉(zhuǎn)站)

    Java 批量獲取地址間距離工具(支持中轉(zhuǎn)站)

    本文主要介紹了Java批量獲取地址間距離,獲取兩個地址間距離,實(shí)現(xiàn)方式比較多,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談Spring Boot 異常處理篇

    淺談Spring Boot 異常處理篇

    本篇文章主要介紹了淺談Spring Boot 異常處理篇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 深入淺析springboot中static和templates區(qū)別

    深入淺析springboot中static和templates區(qū)別

    這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Spring中@Scheduled和HttpClient的連環(huán)坑

    Spring中@Scheduled和HttpClient的連環(huán)坑

    這篇文章主要給大家介紹了關(guān)于Spring中@Scheduled和HttpClient的連環(huán)坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    這篇文章主要介紹了Java通過百度地圖API獲取定位的方法教程,首先說明了實(shí)現(xiàn)這個功能的需求和初衷,然后詳細(xì)描述了利用百度地圖API實(shí)現(xiàn)這個功能的步驟,包括在百度地圖開放平臺的準(zhǔn)備工作、學(xué)習(xí)官網(wǎng)API文檔、修改API的AK配置、Java代碼獲取定位等,需要的朋友可以參考下
    2024-11-11
  • java執(zhí)行Linux命令的方法

    java執(zhí)行Linux命令的方法

    這篇文章主要介紹了java執(zhí)行Linux命令的方法,涉及對Java中Runtime.exec()函數(shù)的應(yīng)用,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • idea類名顯示多行的設(shè)置方式

    idea類名顯示多行的設(shè)置方式

    在IntelliJ IDEA中,類名的顯示方式可以通過設(shè)置來調(diào)整,若想設(shè)置為單行顯示,需在設(shè)置中找到相關(guān)選項(xiàng)并勾選“√”,若需多行顯示,則取消勾選即可,此操作有助于優(yōu)化代碼視圖,提升開發(fā)效率
    2024-09-09
  • SpringBoot中@ComponentScan的使用詳解

    SpringBoot中@ComponentScan的使用詳解

    這篇文章主要介紹了SpringBoot中@ComponentScan的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 關(guān)于Java的二叉樹、紅黑樹、B+樹詳解

    關(guān)于Java的二叉樹、紅黑樹、B+樹詳解

    這篇文章主要介紹了關(guān)于Java的二叉樹、紅黑樹、B+樹詳解,能同時具備數(shù)組查找快的優(yōu)點(diǎn)以及鏈表插入和刪除快的優(yōu)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)就是樹,需要的朋友可以參考下
    2023-05-05

最新評論

津市市| 宽甸| 绥化市| 庆阳市| 太仆寺旗| 兰西县| 神农架林区| 马山县| 泗洪县| 沅江市| 中方县| 河东区| 黔西| 台南县| 登封市| 丰宁| 华亭县| 剑川县| 西青区| 资中县| 温州市| 南乐县| 汽车| 娱乐| 会同县| 兴文县| 收藏| 卓尼县| 博兴县| 孝感市| 金坛市| 洛扎县| 东海县| 巩留县| 濮阳县| 尼玛县| 驻马店市| 洛浦县| 冀州市| 辽宁省| 纳雍县|