process.waitfor()和BufferReader未在控制台中写入完整文件
问题描述:
Process process = Runtime.getRuntime().exec(propertiesMap.get("PmdBatFile"));
BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
String s ;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
process.waitFor();
在此写入大约13,000行输出后,进程停止并进入死锁状态,文件大小显示为3 MB,因此它应该几乎在文件中有超过1个缺少行的地方写了超过500MB的文件。process.waitfor()和BufferReader未在控制台中写入完整文件
有什么限制可以通过bufferReader写入?
答
这工作正常。
ProcessBuilder processBuilder = new ProcessBuilder(propertiesMap.get("PmdBatFile"));
File log = new File(propertiesMap.get("JenkinsLogs")+"\\"+"\JenkinsLog"+"_"+dateFormat.format(date)+".txt");
processBuilder.redirectErrorStream(true);
processBuilder.redirectOutput(ProcessBuilder.Redirect.appendTo(log));
Process process = processBuilder.start();
process.waitFor();
System.out.println("Done");
+0
到目前为止,关于异常的评论中没有任何内容,在这段代码中也没有关于处理它们的内容,但是有关于合并或读取错误流的评论。 – EJP
不是。问题可能是该流程期待输入。在开始读取输出之前,您需要关闭其输入流,并且还需要合并或读取其标准错误。 – EJP