欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java執(zhí)行cmd命令的舉例與注意事項

 更新時間:2022年02月14日 14:29:36   作者:康威特冶樓  
Java應(yīng)用程序主要是通過Runtime和Process兩個類來執(zhí)行cmd命令,下面這篇文章主要給大家介紹了關(guān)于Java執(zhí)行cmd命令的方法與注意事項,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

通常 Java 執(zhí)行 Windows 或者 Linux 的命令時,都是使用 Runtime.getRuntime.exec(command) 來執(zhí)行的

eg1: 執(zhí)行命令

public static void execCommand() {
    try {
        Runtime runtime = Runtime.getRuntime();
        // 打開任務(wù)管理器,exec方法調(diào)用后返回 Process 進(jìn)程對象
        Process process = runtime.exec("cmd.exe /c taskmgr");
        // 等待進(jìn)程對象執(zhí)行完成,并返回“退出值”,0 為正常,其他為異常
        int exitValue = process.waitFor();
        System.out.println("exitValue: " + exitValue);
        // 銷毀process對象
        process.destroy();
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

eg2: 執(zhí)行命令,并獲取正常輸出與錯誤輸出

public static void execCommandAndGetOutput() {
    try {
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("cmd.exe /c ipconfig");
        // 輸出結(jié)果,必須寫在 waitFor 之前
        String outStr = getStreamStr(process.getInputStream());
        // 錯誤結(jié)果,必須寫在 waitFor 之前
        String errStr = getStreamStr(process.getErrorStream());
        int exitValue = process.waitFor(); // 退出值 0 為正常,其他為異常
        System.out.println("exitValue: " + exitValue);
        System.out.println("outStr: " + outStr);
        System.out.println("errStr: " + errStr);
        process.destroy();
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

public static String getStreamStr(InputStream is) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "GBK"));
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = br.readLine()) != null) {
        sb.append(line);
        sb.append("\n");
    }
    br.close();
    return sb.toString();
}

process對象可以通過操作數(shù)據(jù)流,對執(zhí)行的命令進(jìn)行參數(shù)輸入、獲取命令輸出結(jié)果、獲取錯誤結(jié)果

getInputStream()獲取process進(jìn)程的輸出數(shù)據(jù)
getOutputStream()獲取process進(jìn)程的輸入數(shù)據(jù)
getErrorStream()獲取process進(jìn)程的錯誤數(shù)據(jù)

值得注意的是:

getInputStream() 為什么是獲取輸出數(shù)據(jù)?getOutputStream()為什么是獲取輸入數(shù)據(jù)?這是因為 input 和 output 是__針對當(dāng)前調(diào)用 process 的程序而言的__,即

要獲取命令的輸出結(jié)果,就是被執(zhí)行命令的結(jié)果 輸入到我們自己寫的程序中,所以用getInputStream()

要往別的程序輸入數(shù)據(jù),就是我們程序要輸出,所以此時用getOutputStream()

附j(luò)ava調(diào)用cmd命令實現(xiàn)各種操作

在java編程中,有時候我們只需要使用自己的程序或者調(diào)用第三方插件就可以完成一些工作,但是因為個人突發(fā)奇想,雖然cmd命令玩的不是很差,但是是否可以直接將命令寫到j(luò)ava程序中,在自己的程序中進(jìn)行對電腦內(nèi)部的一個控制呢?舉個例子可能更方便理解,因為晚上要下載資源文件,但是我又想睡覺,那么電腦一直開著不僅僅對電腦有損耗,而且可能影響我的睡眠質(zhì)量,雖然我知道cmd的設(shè)置關(guān)機命令,但是我可以寫一個java可執(zhí)行片段,然后用這個來進(jìn)行對電腦的定時關(guān)機操作,這樣以后我如果需要設(shè)置關(guān)機就可以直接調(diào)用自己的程序了,雖然市面上有專門的小工具,但是自己寫的東西總會帶來一點小傲嬌。具體的操作希望大家自行研究,但是要知道cmd命令可以做很多的事情,所以如何合理的在java中使用cmd命令是很有趣的:

public static void main(String[] args) {
 /*獲取cmd命令*/
 try {
    Process pro = Runtime.getRuntime().exec("cmd /c calc"); //添加要進(jìn)行的命令,"cmd  /c calc"中calc代表要執(zhí)行打開計算器,如何設(shè)置關(guān)機請自己查找cmd命令
    BufferedReader br = new BufferedReader(new InputStreamReader(pro
      .getInputStream())); //雖然cmd命令可以直接輸出,但是通過IO流技術(shù)可以保證對數(shù)據(jù)進(jìn)行一個緩沖。
    String msg = null;
    while ((msg = br.readLine()) != null) {
     System.out.println(msg);
    }
   } catch (IOException exception) {
   } 
 /*cmd /c dir 是執(zhí)行完dir命令后關(guān)閉命令窗口
 cmd /k dir 是執(zhí)行完dir命令后不關(guān)閉命令窗口
 cmd /c start dir  會打開一個新窗口后執(zhí)行dir命令,原窗口會關(guān)閉
 cmd /k start dir  會打開一個新窗口后執(zhí)行dir命令,原窗口不會關(guān)閉
 cmd /?  查看幫助信息*/
 }

在這里要提醒大家的是,cmd命令融合到程序中有時候往往是有些實際用途的,比如我的項目中要求一旦用戶做了某種操作就需要關(guān)機,那么這就是一種簡單的使用。

總結(jié)

到此這篇關(guān)于Java執(zhí)行cmd命令的文章就介紹到這了,更多相關(guān)Java執(zhí)行cmd命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot中的條件裝配bean的實現(xiàn)

    spring boot中的條件裝配bean的實現(xiàn)

    這篇文章主要介紹了spring boot中的條件裝配bean的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java實現(xiàn)簡單的掃雷小游戲

    java實現(xiàn)簡單的掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Java編程常見內(nèi)存溢出異常與代碼示例

    Java編程常見內(nèi)存溢出異常與代碼示例

    這篇文章主要介紹了Java編程常見內(nèi)存溢出異常與代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 從JVM分析Java的類的加載和卸載機制

    從JVM分析Java的類的加載和卸載機制

    這篇文章主要介紹了從JVM分析Java的類的加載和卸載機制,講解了Java類的聲明周期,需要的朋友可以參考下
    2015-11-11
  • java數(shù)據(jù)結(jié)構(gòu)之樹基本概念解析及代碼示例

    java數(shù)據(jù)結(jié)構(gòu)之樹基本概念解析及代碼示例

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)之樹基本概念解析及代碼示例,介紹了樹的定義,基本術(shù)語,主要操作及實現(xiàn)等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可了解下。
    2017-11-11
  • JAVA_基本LDAP操作實例

    JAVA_基本LDAP操作實例

    這篇文章介紹了JAVA_基本LDAP操作實例,有需要的朋友可以參考一下
    2013-09-09
  • springboot整合shardingsphere和seata實現(xiàn)分布式事務(wù)的實踐

    springboot整合shardingsphere和seata實現(xiàn)分布式事務(wù)的實踐

    本文主要介紹了springboot整合shardingsphere和seata實現(xiàn)分布式事務(wù)的實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java中ArrayList去除重復(fù)元素(包括字符串和自定義對象)

    Java中ArrayList去除重復(fù)元素(包括字符串和自定義對象)

    本文主要介紹了Java中ArrayList去除重復(fù)元素(包括字符串和自定義對象)的方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • SpringBoot中事務(wù)失效的六個原因解析

    SpringBoot中事務(wù)失效的六個原因解析

    這篇文章主要介紹了SpringBoot中事務(wù)失效的六個原因解析,由于Spring的事務(wù)是基于AOP的方式結(jié)合動態(tài)代理來實現(xiàn)的,因此事務(wù)方法一定要是public的,這樣才能便于被Spring做事務(wù)的代理和增強,需要的朋友可以參考下
    2023-10-10
  • Java值傳遞和引用傳遞詳解

    Java值傳遞和引用傳遞詳解

    這篇文章主要為大家詳細(xì)介紹了Java值傳遞和引用傳遞,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評論