Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java执行cmd命令


在 Java 中执行 CMD 命令有多种方式,下面我将介绍三种常用的方法,并为每种方法提供示例代码和可能的依赖项。

方法一:使用 Runtime.getRuntime().exec()

这是最简单的方法之一,但需要小心处理命令和输出,以避免潜在的安全问题。

导入依赖(无需第三方库):

无需任何额外依赖。

示例代码:

public class CmdExecutionExample {
    public static void main(String[] args) {
        try {
            // 执行命令
            Process process = Runtime.getRuntime().exec("cmd /c dir");

            // 获取命令执行结果
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待命令执行完成
            process.waitFor();
            process.destroy();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

方法二:使用 ProcessBuilder

ProcessBuilder 提供了更多的控制权和配置选项,使得执行命令更加灵活。

导入依赖(无需第三方库):

无需任何额外依赖。

示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessBuilderExample {
    public static void main(String[] args) {
        try {
            // 构建命令
            ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "dir");

            // 重定向输出
            processBuilder.redirectErrorStream(true);

            // 启动进程
            Process process = processBuilder.start();

            // 获取命令执行结果
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待命令执行完成
            int exitCode = process.waitFor();
            System.out.println("Exit Code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

方法三:使用第三方库 Apache Commons Exec

Apache Commons Exec 库为执行外部命令提供了更高级的抽象,使得处理输入、输出和错误更加简单。

导入依赖(Maven):

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-exec</artifactId>
    <version>1.3</version>
</dependency>

示例代码:

import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.ExecuteResultHandler;
import org.apache.commons.exec.ExecuteWatchdog;

import java.io.IOException;

public class CommonsExecExample {
    public static void main(String[] args) {
        try {
            // 构建命令行
            CommandLine cmdLine = CommandLine.parse("cmd /c dir");

            // 配置执行器
            DefaultExecutor executor = new DefaultExecutor();
            executor.setExitValue(0); // 设置期望的退出值

            // 配置超时
            ExecuteWatchdog watchdog = new ExecuteWatchdog(60000); // 60秒超时
            executor.setWatchdog(watchdog);

            // 异步执行命令
            executor.execute(cmdLine, new ExecuteResultHandler() {
                public void onProcessComplete(int exitValue) {
                    System.out.println("Exit Code: " + exitValue);
                }

                public void onProcessFailed(ExecuteException e) {
                    e.printStackTrace();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通过这些方法,你可以在 Java 中执行 CMD 命令,并处理其输出和错误。选择方法取决于你的需求和项目的要求,但请务必小心处理外部命令以确保安全性。

在Java中执行Shell命令有多种方式,以下是一些常见的实现方式以及详细的步骤流程和示例代码:###使用Runtime.示例代码:###使 ...
以下是一些常见的实现方式,以及它们的步骤流程、示例代码以及相关的Maven和Gradle依赖坐标。使用`thenApply()`、`then ...
在Java中执行JAR包有多种方式,我将为您介绍其中的几种常见方式,并提供相应的步骤流程和示例代码。gradle文件中,添加对所需库的依赖坐 ...
在Java中,实现异步执行方法有多种方式,以下是其中一些常见的方式以及它们的步骤流程、示例代码和相关依赖坐标。###使用Java内置的Exe ...
下面我将介绍一些常见的方式,包括使用Java标准库的`ExecutorService`、使用`CompletableFuture`,以及使用 ...