首先我们需要了解Java如何调用命令行来执行外部的命令。在Java中,可以通过ProcessBuilder或Runtime.getRuntime().exec()两种方式实现。
使用ProcessBuilder调用命令行
ProcessBuilder是一个Java API,它提供了一个类来启动外部进程并与其进行交互。下面是一个简单的Java程序,它使用ProcessBuilder类调用命令行并获取执行结果。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class CommandLineExample {
public static void main(String[] args) throws IOException, InterruptedException {
List<String> command = new ArrayList<String>();
command.add("ls");
command.add("-l");
ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
}
}
上面的代码演示了如何使用ProcessBuilder类调用"ls -l"命令,并获取其执行结果。在执行的过程中,可以通过getInputStream()方法获取命令输出的流,然后通过字符缓冲区逐行读取输出的结果,最后由waitFor()方法等待命令执行完成。
使用Runtime.getRuntime().exec()调用命令行
除了ProcessBuilder,Java还提供了另一个API,即Runtime.getRuntime().exec()方法,可以用来调用命令行。下面是一个示例程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CommandLineExample {
public static void main(String[] args) throws IOException, InterruptedException {
Process process = Runtime.getRuntime().exec("ls -l");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
}
}
与上一个示例程序相比,此处使用了Runtime类的exec()方法调用"ls -l"命令,并获取其执行结果。它也利用了getInputStream()方法获取命令输出的流,并通过字符缓冲区逐行读取输出的结果,最后由waitFor()方法等待命令执行完成。
综上所述,我们可以通过ProcessBuilder或Runtime.getRuntime().exec()方法来调用命令行,并获取执行结果。在使用时需要考虑到输出的编码方式,尤其是在Windows系统中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java简单实现调用命令行并获取执行结果示例 - Python技术站