首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 呼叫 Windows DOS 命令的方法

     編輯:Java 相關知識

Java 執行 Windows 系統命令並獲取輸出

在 Java 應用程式中,有時需要呼叫作業系統的原生命令(如 ipconfig、ping、dir 等)並捕獲其輸出結果。Java 提供了 Runtime.getRuntime().exec() 方法來實現這一功能。下面通過一個完整的範例展示如何執行 ipconfig 命令並將結果輸出到控制台。

核心代碼範例

import java.io.*;

/**
 * Java 呼叫 Windows DOS 命令範例
 * 執行 ipconfig 命令,並透過 IO 流讀取輸出資訊。
 */
public class RunWindowsCommand {
    public static void main(String[] args) {
        InputStream ins = null;
        // 在 Windows 上執行命令需使用 "cmd.exe /C 命令"
        String[] cmd = new String[] { "cmd.exe", "/C", "ipconfig" };

        try {
            // 執行命令,返回 Process 物件
            Process process = Runtime.getRuntime().exec(cmd);
            // 獲取命令執行後的標準輸出流
            ins = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(ins));

            String line;
            // 逐行讀取並輸出
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待命令執行結束,獲取退出碼(0 通常表示成功)
            int exitValue = process.waitFor();
            System.out.println("退出碼:" + exitValue);

            // 關閉輸出流(良好習慣)
            process.getOutputStream().close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

關鍵點解析

  • 命令格式:Windows 下必須使用 cmd.exe /C 作為前綴,後面跟具體命令。
  • 流處理:process.getInputStream() 獲取的是子進程的標準輸出(對 Java 程式來說是輸入流),必須及時讀取,否則可能導致緩衝區滿而阻塞子進程。
  • 錯誤流:實際專案中建議同時讀取 process.getErrorStream(),防止錯誤輸出填滿緩衝區。
  • 線程安全:waitFor() 會阻塞當前線程直到子進程結束。

進階建議

若需處理複雜交互或跨平臺兼容性,建議使用 ProcessBuilder 類,它提供了更靈活的環境變量、工作目錄設定以及重定向錯誤流合併到標準輸出的功能(redirectErrorStream(true))。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved