InputStream的输出在最后一行

时间:2018-08-23 14:18:11

标签: java

我需要检查一项工作的状态,直到成功为止。为此,我编写了以下代码。 但是程序在执行完语句后挂起。

boolean isComplete = false;
            for (int i=0; i<30; i++) {
                p_stdin.write("ar job-name");
                p_stdin.newLine();
                p_stdin.flush();
                Thread.sleep(2000);
                Scanner s = new Scanner( p.getInputStream() );
                String output = "";
                while (s.hasNext())
                {
                    output = s.next() ;
                    System.out.println(output);
                    if(output.equalsIgnoreCase("SU")) {
                        isComplete = true;
                        break;
                    }
                }
                if(isComplete) {
                    System.out.println("Found");
                    break;
                } else {
                    System.out.println("Not found in "+ i + " iteration");
                }
                s.close();
            }

1 个答案:

答案 0 :(得分:0)

来自documentation

  

如果此扫描仪的输入中包含另一个令牌,则返回true。 此方法可能在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。

您需要关闭已写入的流,以便hasNext()有机会返回false