下面是完整攻略:
1. 通过Runtime.getRuntime().exec()方法调用CMD命令
Java可以通过对Runtime.getRuntime().exec()方法的调用来启动CMD命令,并通过输入输出流来与CMD命令进行交互。具体步骤如下:
- 创建一个Process对象,通过执行CMD命令来启动新程序。
- 通过Process对象的getInputStream()方法来获取CMD命令的输出流,并通过读取输出流来获取CMD命令输出的结果。
- 通过Process对象的getErrorStream()方法来获取CMD命令的错误输出流,并通过读取错误输出流来获取CMD命令可能输出的错误信息。
- 通过Process对象的waitFor()方法等待CMD命令执行完成。
下面给出一个简单的示例,该示例通过调用CMD命令打开记事本:
try {
// 执行CMD命令启动记事本
Process process = Runtime.getRuntime().exec("cmd /c start notepad");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
// 等待CMD命令执行完成
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
2. 通过ProcessBuilder.start()方法调用CMD命令
与上一个示例相比,另一种调用CMD命令的方法是通过ProcessBuilder.start()方法来创建一个Process对象。ProcessBuilder提供了更多的灵活性,例如在执行CMD命令时指定工作目录、环境变量、命令参数等。具体步骤如下:
- 创建一个ProcessBuilder对象,并设置CMD命令及其参数、工作目录、环境变量等。
- 调用ProcessBuilder.start()方法来启动新程序。
- 通过Process对象的getInputStream()、getErrorStream()和waitFor()方法来与CMD命令进行交互。
下面给出一个示例,该示例通过ProcessBuilder调用CMD命令打开一个文件:
String filePath = "C:\\my_folder\\my_file.txt";
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "start", "\"\"", filePath);
pb.directory(new File("C:\\my_folder"));
Process process = pb.start();
// 这里可以读取CMD命令的输出流和错误输出流
// 等待CMD命令执行完成
process.waitFor();
在本示例中,ProcessBuilder指定了CMD命令及其参数(开启新窗口并打开指定文件),并将工作目录设置为C:\my_folder;CMD命令会在该目录下执行。另外,注意到filePath是被双引号括起来的,这是因为文件路径中可能存在空格,双引号能够保证CMD命令正确解析文件路径。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java调用windows系统的CMD命令并启动新程序 - Python技术站