
java如何调动外部带参数
用户关注问题
Java中如何向外部程序传递参数?
我需要在Java程序中调用另一个外部程序,并且给它传递一些参数,该怎么操作比较合适?
使用ProcessBuilder传递参数给外部程序
Java提供了ProcessBuilder和Runtime.exec()两种方式来调用外部程序。推荐使用ProcessBuilder,它支持以List的形式传入命令和参数,确保参数不会被错误解析。示例代码:
ProcessBuilder pb = new ProcessBuilder("外部程序路径", "参数1", "参数2");
Process process = pb.start();
这样可以安全地带上参数执行外部程序。
Java调用外部命令时如何避免参数包含空格出现问题?
我发现有时候传递带空格的参数给外部命令时,参数被拆开了,如何解决这个问题?
通过ProcessBuilder的列表参数传递保持参数完整
当参数中包含空格或特殊字符时,不建议直接拼接字符串作为命令行执行。ProcessBuilder允许将命令和参数作为单独的字符串元素传入,这样Java会自动进行适当的转义和传递,确保参数整体作为一个部分传给外部程序。例如:
ProcessBuilder pb = new ProcessBuilder("myProgram", "param with space");
这样就可以保证参数被完整处理。
怎样捕获Java调用外部程序时的输出信息?
我希望Java程序执行外部命令,并读取它的控制台输出,该如何实现?
通过Process对象读取外部程序的标准输出流
在Java中调用外部程序后,可以通过Process的getInputStream()方法获取外部程序的标准输出流,使用BufferedReader读取内容。例如:
Process process = new ProcessBuilder("myProgram", "param").start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
这样可以实时获得外部程序的输出结果。