【发布时间】:2017-03-04 06:04:14
【问题描述】:
我用 Java 执行一个进程。该进程永远不会终止并扫描机器以查找某些文件,当它找到其中一个时,它会打印文件的路径。我想执行该过程一段时间并获得输出。这是我的一段代码
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
Process p = pb.start();
while ((System.currentTimeMillis() <= endTime )){ //loop 1
while((line=stdInput.readLine()) != null){ loop 2
System.out.println(line);
}
}
p.destroy();
问题在于,如果脚本在短时间内找不到结果,则循环 2 将退出并且在此期间不再运行。
我也试过了
while ((System.currentTimeMillis() <= endTime ) || (line=stdInput.readLine()) != null))
但在这种情况下,如果stdInput.readLine() 仍然返回结果,即使时间结束,循环也不会结束。
while ((System.currentTimeMillis() <= endTime ) && (line=stdInput.readLine()) != null))
在这种情况下,如果line=stdInput.readLine()没有返回结果,即使时间没有结束,循环也会退出
编辑: 我试过这段代码
System.out.println("Before while");
while ((System.currentTimeMillis() <= endTime ){
System.out.println("while");
if(line=stdInput.readLine())!= null){
System.out.println("One line");
}
}
p.destroy();
如果进程没有检测到任何东西,循环永远不会结束,这就是输出
好的 之前 而
System.out.println("while");当它应该被调用 5 秒时,它只被调用了一次。
【问题讨论】:
标签: java while-loop