检查Reader是否为空的最佳方法是什么?

时间:2018-11-20 21:53:15

标签: java bufferedreader is-empty

在将阅读器传递给某些外部函数之前,我需要检测Reader是否为空(不会产生任何数据)。

我能想到的最好的办法是将Reader包裹在BufferedReader中,这保证提供mark / reset功能,然后尝试读取一个字符,然后将流重置为其原始位置。

BufferedReader buffered = new BufferedReader(myReader);
if (!isEmpty(buffered)) {
    someOtherFunction(buffered);
}

private boolean isEmpty(BufferedReader reader) throws IOException {
    reader.mark(1);
    int c = reader.read();
    reader.reset();
    return c < 0;
}

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

使用ready()检查流是否可以读取here docs

还建议在检查null之前先进行ready()检查

public boolean ready() throws IOException

告诉该流是否已准备好被读取。如果缓冲区不为空,或者基础字符流已准备好,则缓冲的字符流已准备就绪。

注意:

  

如果保证不阻止下一个read()输入,则为true,否则为false。请注意,返回false并不能保证下一次读取将被阻止。