首页 > Java > java教程 > 如何使用 Java 的 Runtime.getRuntime() 检索命令行输出?

如何使用 Java 的 Runtime.getRuntime() 检索命令行输出?

Patricia Arquette
发布: 2024-12-31 10:10:14
原创
275 人浏览过

How Can I Retrieve Command Line Output Using Java's Runtime.getRuntime()?

使用 Java 的 Runtime.getRuntime() 检索命令行输出

为了利用 Java 中命令行实用程序的强大功能,程序员经常使用 Runtime .getRuntime()。虽然这种方法可以轻松执行外部程序,但捕获其输出可能会令人困惑。本文揭示了使用 Runtime.getRuntime() 检索命令行输出的复杂性。

首先,考虑这个简化的示例:

Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send", argument};
Process proc = rt.exec(commands);
登录后复制

默认情况下,Runtime.getRuntime().exec () 将返回一个代表已执行程序的 Process 对象。但是,程序生成的输出仍然无法通过 Process 对象本身访问。

要检索输出,需要深入研究与 Process 对象关联的 InputStream。有两个输入流需要考虑:

  • proc.getInputStream():此流提供对执行程序的标准输出的访问。
  • proc.getErrorStream():该流捕获由 proc.getErrorStream()
  • 生成的任何错误消息或警告

要读取标准输出,请使用 BufferedReader 对象:
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
登录后复制

通过 stdInput,我们可以使用 readLine() 方法逐行检索输出。
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
}
登录后复制

要捕获任何错误,请遵循类似的方法proc.getErrorStream().
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

while ((s = stdError.readLine()) != null) {
    System.out.println(s);
}
登录后复制

通过将这些流合并到代码中,您可以有效地检索通过 Runtime.getRuntime() 执行的命令行程序的输出。

以上是如何使用 Java 的 Runtime.getRuntime() 检索命令行输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板