关于捕获stdout并将其存储到字符串中,人们提出了许多问题,但大多数stdout都是由用户生成或由直接java函数输出的内容。在我的示例中,我从java程序启动了一个脚本,该脚本将一系列文件路径打印到stdout。它是一个使用find
命令返回文件路径的脚本。我希望捕获这些文件路径,并将它们存储到Java代码中的一个字符串中,以便稍后在java程序的另一个函数中使用。
我的代码:
launchOnCommandLine("./getFilepaths.sh");
这将显示控制台窗口的一系列文件路径,我希望捕获这些路径并将其存储到一个字符串中。
关于ByteArrayOutputStream
的例子有很多,但我不太明白如何在我的上下文中使用它。
发布于 2013-12-11 01:40:47
你试过http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()吗?
我认为你可以这样做:
Process p = Runtime.exec("process.sh");
Scanner scanner = new Scanner(p.getInputStream());
p.waitFor();
while (scanner.hasNext()) {
String line = scanner.next();
/* Do whatever you need we the current line */
}
发布于 2013-12-11 02:45:29
Process.getInputStream()
可以处理它,但它有一些警告,如果您不小心从流中读取数据,可能会导致死锁:Some reading here
如果您正在使用Java1.7,那么建议的更安全的替代方案是使用ProcessBuilder
类:Some more reading。
https://stackoverflow.com/questions/20500981
复制相似问题