Java调用外部程序是一种常见场景,我们可以使用Java语言来方便地与外部程序进行交互。在本篇文章中,我将为大家详细讲解Java调用外部程序的方法及代码演示。
一、使用Runtime类调用外部程序
1.1 Runtime.getRuntime().exec()方法
Java提供了Runtime
类来处理与系统进程的交互,我们可以使用该类的exec()
方法来启动一个新的子进程,并执行指定的命令。以下是示例代码:
Process p = Runtime.getRuntime().exec("cmd /c dir");
上述代码使用Runtime
类调用Windows系统的cmd
命令,并在命令后面加上'/c
'参数执行'dir
'命令,输出当前目录下的文件及文件夹列表。
1.2 获取进程输出结果
一般而言,调用外部命令都需要获得其输出结果。我们可以使用Process
类的getInputStream()
方法获取子进程的标准输出流,并使用BufferedReader
类来读取输出结果。以下是示例代码:
Process p = Runtime.getRuntime().exec("cmd /c dir");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
上述代码执行完子进程后,将输出结果逐行读取并打印出来。
二、使用ProcessBuilder类调用外部程序
ProcessBuilder
类提供了更为灵活且易于维护的调用外部程序方法。我们可以使用该类的构造器,传入外部程序参数即可启动新的进程。以下是示例代码:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
Process p = pb.start();
上述代码使用ProcessBuilder
类调用Windows系统的cmd
命令,并在命令后面加上'/c
'参数执行'dir
'命令。
2.1 设置工作目录
我们可以使用ProcessBuilder
类的directory()
方法来设置工作目录,这样可以保证在调用外部程序时,指定的命令可以在指定的目录下执行。以下是示例代码:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
pb.directory(new File("D:/")); // 将工作目录设置为D盘根目录
Process p = pb.start();
上述代码将工作目录设置为D盘的根目录。
2.2 执行命令后等待命令执行完成
我们可以使用Process
类的waitFor()
方法来等待外部命令执行完成。以下是示例代码:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
Process p = pb.start();
int retCode = p.waitFor(); // 等待命令执行完成
上述代码执行外部命令后,等待命令执行完成,返回值表示命令执行的结果码。如果返回值为0,则表示命令执行成功。
三、示例代码演示
接下来,我们将演示使用Java调用外部程序的完整代码示例。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
public class ProcessDemo {
public static void main(String[] args) throws IOException, InterruptedException {
// 使用Runtime类调用外部程序
System.out.println("---------------1.使用Runtime类调用外部程序---------------");
// 设置cmd命令,cmd /c代表执行完该命令后关闭cmd窗口
Process p = Runtime.getRuntime().exec("cmd /c dir");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("----------------------------------------------------------");
// 使用ProcessBuilder类调用外部程序
System.out.println("---------------2.使用ProcessBuilder类调用外部程序---------------");
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
pb.directory(new File("D:/"));
Process p2 = pb.start();
int retCode = p2.waitFor();
if (retCode == 0) {
System.out.println("命令执行成功");
} else {
System.out.println("命令执行失败");
}
System.out.println("----------------------------------------------------------");
}
}
上述代码分别使用Runtime
类和ProcessBuilder
类调用外部程序,执行完命令后并且输出命令执行的结果。
这就是Java调用外部程序的方法及代码演示的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java调用外部程序的方法及代码演示 - Python技术站