繁体   English   中英

BufferedReader.readLine()方法阻止流程

[英]BufferedReader.readLine() method blocking flow

我在Process Builder的帮助下通过Java代码命中了一些命令。 以下是我的代码

Process poc = null;
List<String> result = new LinkedList<String>();
BufferedReader response = null;

ProcessBuilder pb = new ProcessBuilder(command);
pb.directory(new File(commands.get(GlobalConstants.ADB_PATH_WINDOW)));
poc = pb.start();

我正在使用BufferedReader读取其输出:

response = new BufferedReader(new InputStreamReader(poc.getInputStream()));
String line = "";
while ((line = response.readLine()) != null) 
{
    result.add(line);
    if (line.contains("daemon started successfully")) 
    {
        return result;
    }
}

但有时line = response.readLine()方法陷入infinite loop 我知道是什么原因,但是我无法通过使用readLine()函数来解决此问题。 有人可以用不同的阅读逻辑来帮助我吗?

也许错误是由另一个原因引起的。 通过以下方法检查EOF是否真的达到了:

try {
while (true) {
    result.add(response.readLine());
    if (line.contains("daemon started successfully")) 
    {
        return result;
    }
} } catch (EOFException e) {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM