使用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程序中实现更多的功能,比如控制系统、启动程序等。希望本文对你有所帮助!