例如:
读 InputStream 标准输出流,输出流东西很多
发现正常读取的时候 process 已经退出了
process.waitFor()方法 等待会导致缓冲区被填满,然后阻塞
思路是在 waitFor()前,异步地去读取输出流中的内容
但是不生效
简单代码 我写一块儿了 缩进比较恶心 主要是有什么好的解决思路吗?
Process process;
try {
process = runtime.exec(commands);
ThreadPools.LOG_COLLECT.execute(()->{
try (InputStream in = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
String line;
File destfile = new File(...);
while ((line = br.readLine()) != null) {
FileUtils.writeStringToFile(destfile, line + "\n", StandardCharsets.UTF_8, true);
}
} catch (IOException e) {
//exception handler
}
});
process.waitFor();
} catch (IOException | InterruptedException e) {
//exception handler
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.