有很多关于捕获stdout并将其存储到字符串中的问题,但是大多数stdout都是由用户生成或由直接java函数输出的。在我的例子中,从我的java程序,我正在启动一个脚本,打印一系列文件路径到stdout。它是一个使用find
命令返回文件路径的脚本。我想捕获这些文件路径并将它们存储在我的Java代码中的一个字符串中,以后我可以在java程序的另一个函数中使用它。
我的代码:
launchOnCommandLine("./getFilepaths.sh");
这将向控制台窗口吐出一系列文件路径,我想捕获它们并将其存储到字符串中。
有很多关于ByteArrayOutputStream
的例子,但我不太明白如何在我的上下文中使用它。
答案 0 :(得分:0)
您是否尝试过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 */
}
答案 1 :(得分:-1)
Process.getInputStream()
可以处理它,但是如果你不小心从你的流中读取它会有一些警告会导致死锁:Some reading here
如果您使用的是Java 1.7,建议的更安全的替代方法是改为使用ProcessBuilder
类:Some more reading。