java - 检查阅读器是否为空的最佳方法是什么?
问题描述
在将阅读器传递给某个外部函数之前,我需要检测 aReader
是否为空(不会产生任何数据)。
我能想到的最好的办法是将我的 a 包装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;
}
有没有更好的办法?
解决方案
用于ready()
检查流是否可以阅读此处文档
并且还建议null
检查前检查ready()
public boolean ready() throws IOException
告诉这个流是否准备好被读取。如果缓冲区不为空,或者底层字符流已准备好,则缓冲字符流已准备好。
笔记 :
如果保证下一个 read() 不会阻塞输入,则为 true,否则为 false。请注意,返回 false 并不能保证下一次读取将阻塞。
推荐阅读
- python - 使用 Selenium 和 Python 更改输入字段值未显示在网页上
- typescript - 如何在 Electron 上使用带有 TypeScript 类型支持的 require 内部函数或条件?
- java - Android Studio 4.x:如何创建直接从其他类继承的类?
- python - plt.axis('off') 在处理多个子图时无法正常工作?
- r - rank 函数在 R 中的工作原理
- ray - 在 ray tune 中跨多个调用获取不同的配置集
- r - 如何将百分比限制在每个单独的方面而不是跨方面?
- python - jupyter notebook 中的情节不断消失
- azure-synapse - Azure Synapse Analyitcs 是否支持 R 语言?
- elasticsearch - 在弹性搜索中的字段值中搜索“}”花括号