从getInputStream获取输入的奇怪问题

时间:2009-11-26 22:37:47

标签: java

这是我的代码:

    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程序中处理输出时得到的文本不完全相同!

是什么导致这个?输出是所有文本。

1 个答案:

答案 0 :(得分:3)

您似乎只是在阅读标准输出,而您也可能在标准错误上获得输出。我会读两个。

请注意,您需要同时读取并发两个流,以避免阻塞。有关详细信息,请参阅this answer