我有一些代碼讀取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