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

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

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

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

eg1: 執(zhí)行命令

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

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

public static void execCommandAndGetOutput() {
    try {
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("cmd.exe /c ipconfig");
        // 輸出結(jié)果,必須寫在 waitFor 之前
        String outStr = getStreamStr(process.getInputStream());
        // 錯(cuò)誤結(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對(duì)象可以通過操作數(shù)據(jù)流,對(duì)執(zhí)行的命令進(jìn)行參數(shù)輸入、獲取命令輸出結(jié)果、獲取錯(cuò)誤結(jié)果

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

值得注意的是:

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

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

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

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

在java編程中,有時(shí)候我們只需要使用自己的程序或者調(diào)用第三方插件就可以完成一些工作,但是因?yàn)閭€(gè)人突發(fā)奇想,雖然cmd命令玩的不是很差,但是是否可以直接將命令寫到j(luò)ava程序中,在自己的程序中進(jìn)行對(duì)電腦內(nèi)部的一個(gè)控制呢?舉個(gè)例子可能更方便理解,因?yàn)橥砩弦螺d資源文件,但是我又想睡覺,那么電腦一直開著不僅僅對(duì)電腦有損耗,而且可能影響我的睡眠質(zhì)量,雖然我知道cmd的設(shè)置關(guān)機(jī)命令,但是我可以寫一個(gè)java可執(zhí)行片段,然后用這個(gè)來進(jìn)行對(duì)電腦的定時(shí)關(guān)機(jī)操作,這樣以后我如果需要設(shè)置關(guān)機(jī)就可以直接調(diào)用自己的程序了,雖然市面上有專門的小工具,但是自己寫的東西總會(huì)帶來一點(diǎn)小傲嬌。具體的操作希望大家自行研究,但是要知道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í)行打開計(jì)算器,如何設(shè)置關(guān)機(jī)請(qǐng)自己查找cmd命令
    BufferedReader br = new BufferedReader(new InputStreamReader(pro
      .getInputStream())); //雖然cmd命令可以直接輸出,但是通過IO流技術(shù)可以保證對(duì)數(shù)據(jù)進(jìn)行一個(gè)緩沖。
    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  會(huì)打開一個(gè)新窗口后執(zhí)行dir命令,原窗口會(huì)關(guān)閉
 cmd /k start dir  會(huì)打開一個(gè)新窗口后執(zhí)行dir命令,原窗口不會(huì)關(guān)閉
 cmd /?  查看幫助信息*/
 }

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

總結(jié)

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

相關(guān)文章

  • Spring?Data?JPA實(shí)現(xiàn)數(shù)據(jù)持久化過程詳解

    Spring?Data?JPA實(shí)現(xiàn)數(shù)據(jù)持久化過程詳解

    Spring?Data?JPA是一個(gè)流行的Java持久化框架,它在Java應(yīng)用程序中提供了一種簡單、一致和易于使用的方式來訪問各種數(shù)據(jù)庫。本文將介紹Spring?Data?JPA的基本概念和用法并提供一個(gè)完整的實(shí)例,幫助您更好地理解它的使用方法和優(yōu)勢(shì)
    2023-05-05
  • 淺析Java中的虛擬線程

    淺析Java中的虛擬線程

    在本篇文章中,小編將帶大家深入了解Java虛擬線程的原理、如何使用、使用的注意事項(xiàng)以及其他相似技術(shù)的差別,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Java中fail-fast和fail-safe的使用

    Java中fail-fast和fail-safe的使用

    fail-fast和fail-safe是兩種不同的迭代器行為,特別是在遍歷集合時(shí)遇到并發(fā)修改的情況,本文主要介紹了Java中fail-fast和fail-safe的使用,感興趣的可以了解一下
    2024-08-08
  • 詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建

    詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建

    這篇文章主要介紹了詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring?IOC容器基于XML外部屬性文件的Bean管理

    Spring?IOC容器基于XML外部屬性文件的Bean管理

    這篇文章主要為大家介紹了Spring?IOC容器Bean管理XML外部屬性文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java實(shí)現(xiàn)幾種常見排序算法代碼

    Java實(shí)現(xiàn)幾種常見排序算法代碼

    排序(Sorting) 是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,它的功能是將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個(gè)關(guān)鍵字有序的序列
    2013-09-09
  • Java 如何利用緩沖流讀寫文件

    Java 如何利用緩沖流讀寫文件

    這篇文章主要介紹了Java 如何利用緩沖流讀寫文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java單機(jī)環(huán)境實(shí)現(xiàn)定時(shí)任務(wù)技術(shù)

    Java單機(jī)環(huán)境實(shí)現(xiàn)定時(shí)任務(wù)技術(shù)

    這篇文章主要介紹了Java單機(jī)環(huán)境實(shí)現(xiàn)定時(shí)任務(wù)技術(shù),文章內(nèi)容介紹詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • JavaSE詳細(xì)講解異常語法

    JavaSE詳細(xì)講解異常語法

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會(huì)根據(jù)身體情況選擇喝開水、吃藥、看病、等 異常處理方法。 java異常處理機(jī)制是我們java語言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力,程序出現(xiàn)的錯(cuò)誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-05-05
  • IntelliJ IDEA 設(shè)置代碼提示或自動(dòng)補(bǔ)全的快捷鍵功能

    IntelliJ IDEA 設(shè)置代碼提示或自動(dòng)補(bǔ)全的快捷鍵功能

    這篇文章主要介紹了IntelliJ IDEA 設(shè)置代碼提示或自動(dòng)補(bǔ)全的快捷鍵功能,需要的朋友可以參考下
    2018-03-03

最新評(píng)論

射洪县| 阿拉善右旗| 左云县| 福贡县| 青州市| 龙岩市| 海阳市| 金华市| 金阳县| 恩平市| 越西县| 兰考县| 泸州市| 瑞丽市| 宜君县| 贞丰县| 花莲县| 台江县| 德化县| 家居| 车险| 怀化市| 建德市| 竹北市| 交口县| 大关县| 永吉县| 安顺市| 海林市| 永寿县| 嵊州市| 交口县| 揭阳市| 南康市| 大荔县| 虎林市| 赤壁市| 凤阳县| 巴南区| 前郭尔| 台州市|