这是我的代码:
Runtime re = Runtime.getRuntime();
BufferedReader output = null;
try{
Process cmd = re.exec("java -jar myProg.jar " + myArgument);
output = new BufferedReader(new InputStreamReader(cmd.getInputStream()));
}
catch (Exception e){
e.printStackTrace();
}
String line;
while ((line = output.readLine()) != null)
{
//process line
}
在调试此代码片段时,我发现当从输出中读取每一行时,它会跳过某些行。
如果我从命令行运行myProg.jar,那么在我的命令行中看到的文本与我在java程序中处理输出时得到的文本不完全相同!
是什么导致这个?输出是所有文本。
答案 0 :(得分:3)
您似乎只是在阅读标准输出,而您也可能在标准错误上获得输出。我会读两个。
请注意,您需要同时读取并发两个流,以避免阻塞。有关详细信息,请参阅this answer。