使用Java调用cmd执行命令

在Java程序中,我们经常需要调用外部命令来执行一些特定操作,比如执行系统命令、启动一个程序等。在Windows系统中,我们可以通过cmd命令行来执行这些操作。本文将介绍如何使用Java程序调用cmd来执行命令,并给出示例代码。

Java调用cmd的方法

Java提供了可以执行外部命令的Runtime类和ProcessBuilder类。其中,Runtime类是一个单例类,通过Runtime.getRuntime()方法获取实例,然后调用exec()方法来执行命令;ProcessBuilder类则是用来创建进程的工具类,可以更加灵活地控制进程的创建和执行。

使用Runtime类调用cmd

下面是使用Runtime类调用cmd执行命令的示例代码:

public class CmdTest {
    public static void main(String[] args) {
        try {
            String command = "cmd /c dir"; // 要执行的cmd命令
            Process process = Runtime.getRuntime().exec(command);
            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();
        }
    }
}

上面的代码中,我们通过Runtime.getRuntime().exec(command)方法执行了cmd /c dir命令,即在cmd命令行中执行dir命令,即列出当前目录下的文件和文件夹。然后通过BufferedReader读取命令执行的输出并打印出来。最后调用process.waitFor()等待命令执行完成,并调用process.destroy()销毁进程。

使用ProcessBuilder类调用cmd

下面是使用ProcessBuilder类调用cmd执行命令的示例代码:

public class CmdTest {
    public static void main(String[] args) {
        try {
            ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "dir");
            builder.redirectErrorStream(true);
            Process process = builder.start();
            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类创建了一个进程,指定了执行的命令为cmd.exe /c dir,也是执行dir命令。之后的流程和使用Runtime类调用cmd类似。

流程图

下面是调用cmd执行命令的流程图:

flowchart TD;
    Start-->创建Process对象;
    创建Process对象-->获取InputStream;
    获取InputStream-->读取输出内容;
    读取输出内容-->输出到控制台;
    输出到控制台-->等待命令执行完成;
    等待命令执行完成-->销毁进程;
    销毁进程-->End;

总结

本文介绍了如何使用Java程序调用cmd执行命令的方法,并给出了使用Runtime类和ProcessBuilder类的示例代码。通过调用cmd执行命令,我们可以在Java程序中实现更多的功能,比如控制系统、启动程序等。希望本文对你有所帮助!