🙏废话不多说系列,直接开整🙏
一、介绍
在Java中可以调用外部程序,这需要通过Process等类来实现。
二、示例
(1)调用 Windows CMD查看JDK版本
ProcessBuilder pb = new ProcessBuilder("java","-version");
pb.redirectErrorStream(true);
Process process = pb.start();
process.waitFor();
System.out.println(process.exitValue());
byte[] bytes = new byte[process.getInputStream().available()];
process.getInputStream().read(bytes);
System.out.println(new String(bytes));
// 输出结果
0
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
(2)调用 Windows 记事本
调用 notepad 就可以启动记事本了。由于我们调用了process.waitFor() ,所以当记事本窗口关闭前,Java程序也不会关闭。同理,calc 可以启动计算器,explorer 可以启动资源管理器。
ProcessBuilder pb = new ProcessBuilder("notepad");
pb.redirectErrorStream(true);
Process process = pb.start();
process.waitFor();
System.out.println(process.exitValue());
byte[] bytes = new byte[process.getInputStream().available()];
process.getInputStream().read(bytes);
System.out.println(new String(bytes));
(3)查看 Windows 版本
// JDK1.8
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "ver");
pb.redirectErrorStream(true);
Process process = pb.start();
process.waitFor();
System.out.println(process.exitValue());
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"))) {
String result = reader.lines().collect(Collectors.joining("\n"));
System.out.println(result);
}
🙏至此,非常感谢阅读🙏