从脚本捕获标准输出并存储在java字符串中

从脚本捕获标准输出并存储在java字符串中,java,io,Java,Io,关于捕获stdout并将其存储到字符串中有很多问题,但大多数stdout都是由用户生成或由直接java函数输出的。在我的例子中,我从java程序启动了一个脚本,它将一系列文件路径打印到标准输出。它是一个使用find命令返回文件路径的脚本。我希望捕获这些文件路径,并将它们存储到Java代码中的字符串中,以便以后在Java程序的另一个函数中使用 我的代码: launchOnCommandLine("./getFilepaths.sh"); 这将弹出一系列指向控制台窗口的文件路径,我希望捕获这些路径

关于捕获stdout并将其存储到字符串中有很多问题,但大多数stdout都是由用户生成或由直接java函数输出的。在我的例子中,我从java程序启动了一个脚本,它将一系列文件路径打印到标准输出。它是一个使用
find
命令返回文件路径的脚本。我希望捕获这些文件路径,并将它们存储到Java代码中的字符串中,以便以后在Java程序的另一个函数中使用

我的代码:

launchOnCommandLine("./getFilepaths.sh");
这将弹出一系列指向控制台窗口的文件路径,我希望捕获这些路径并将其存储到字符串中

关于
ByteArrayOutputStream
有很多例子,但我不太明白如何在我的上下文中使用它

你试过了吗

我认为你可以做一些类似的事情:

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 */
}

Process.getInputStream()
可以处理它,但如果您不小心读取流,它有一些警告可能导致死锁:


如果您使用的是Java 1.7,则建议使用
ProcessBuilder
类作为更安全的替代:。

您是否可以将它们导入文件并将其用作输入?