java runtime 运行外部程序
时间: 2024-05-05 15:18:02 浏览: 105
可以使用 Java 的 ProcessBuilder 类来运行外部程序。该类提供了一种创建操作系统进程并执行指定命令的方式。您可以通过设置 ProcessBuilder 对象的属性来指定要执行的命令、参数和工作目录等选项。接下来,您可以使用该类的 start() 方法来启动进程并等待其结束。开始执行外部程序的示例代码如下:
```
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
pb.redirectErrorStream(true);
pb.directory(new File("C:\\temp"));
Process proc = pb.start();
int exitCode = proc.waitFor();
System.out.println("Process exited with code " + exitCode);
```
这个示例演示了如何启动 Windows 上的 cmd.exe 进程,并使用 /c 参数来执行 dir 命令来列出指定目录的内容。输出将被重定向到标准输出流,并且工作目录将被设置为 C:\temp。最后,程序将等待进程结束并输出其退出代码。
相关问题
java运行外部程序
Java可以使用Runtime类或ProcessBuilder类来运行外部程序。下面是两种方法的示例:
1. 使用Runtime类运行外部程序
```java
try {
// 运行记事本程序
Runtime.getRuntime().exec("notepad.exe");
} catch (IOException e) {
e.printStackTrace();
}
```
2. 使用ProcessBuilder类运行外部程序
```java
try {
// 运行cmd命令
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
Process process = pb.start();
// 读取命令输出结果
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
```
java运行外部exe程序并传参不需要返回值
在Java中,你可以通过`Runtime`或`ProcessBuilder`类来执行外部的EXE程序,并传递参数。这里是一个基本的例子:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
try {
// 使用Runtime类执行命令
String command = "path_to_your_exe.exe arg1 arg2"; // 替换为你的EXE路径和参数
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); // 输出执行结果,如果不需要返回值,则这部分可以忽略
}
int exitCode = process.waitFor(); // 等待进程结束
if (exitCode == 0) {
System.out.println("External program executed successfully.");
} else {
System.out.println("Execution failed with error code: " + exitCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们创建了一个`Process`实例,然后通过`getInputStream()`获取到程序的标准输出,用于读取可能产生的日志信息。`waitFor()`方法则用于等待程序执行完毕。
阅读全文