首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从脚本中捕获stdout并存储在java字符串中

从脚本中捕获stdout并存储在java字符串中
EN

Stack Overflow用户
提问于 2013-12-11 01:17:19
回答 2查看 120关注 0票数 0

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

我的代码:

代码语言:javascript
运行
复制
launchOnCommandLine("./getFilepaths.sh");

这将显示控制台窗口的一系列文件路径,我希望捕获这些路径并将其存储到一个字符串中。

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

EN

回答 2

Stack Overflow用户

发布于 2013-12-11 01:40:47

你试过http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()吗?

我认为你可以这样做:

代码语言:javascript
运行
复制
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 */
}
票数 0
EN

Stack Overflow用户

发布于 2013-12-11 02:45:29

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

如果您正在使用Java1.7,那么建议的更安全的替代方案是使用ProcessBuilder类:Some more reading

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20500981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档