process.waitfor()和BufferReader未在控制台中写入完整文件

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写入?

+0

不是。问题可能是该流程期待输入。在开始读取输出之前,您需要关闭其输入流,并且还需要合并或读取其标准错误。 – EJP

这工作正常。

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