我有一些代码读取BufferedReader中的行,并从它读取的数据创建一个对象,然后将其发送出去进行处理。这继续下去,直到BufferedReader.readLine()返回null(即到达文件末尾或套接字关闭等)是否有可能知道BufferedReader.readLine()是否会提前返回null?
我认为这可能是有用的创建一个类,它实现Iterable<MyObject>
因此它可以被消耗
IObjectReader objectReader = new MyObjectReader(someBufferedReaderThatExists);
for (IObjectToProcess obj : objectReader) {
processTheObject(obj);
}
,因为这样会更容易注入可能创造回报不同类型IObjectToProcess
对象的不同IObjectReader
对象。
然而,棘手的一点是执行Iterable.hasNext()
- 我怎么能告诉BufferedReader.readLine()
将返回null
没有实际调用它?
(注:BufferedReader.ready()
不是问题的答案:它只是告诉我,如果读会阻塞,而不是是否会返回null
)
我不认为有一种方法来实现hasNext,而不先尝试读下一个。我可以肯定是错的,虽然 – Scotch