我正在閱讀BufferedReader
,該文件正在打包InputStreamReader
。流來自於與myURL.openStream();
BufferedReader讀取(char [],int,int)是否被阻塞?
我想讀(startPos
和endPos
之間的字符)流的部分爲String
,然後將其存儲在一個文本文件的URL。
char[] buffer = new char[endPos-startPos];
reader.skip(startPos);
int i = 0;
while(i < (endPos-startPos)){
buffer[i] = (char) reader.read();
i++;
}
上面的代碼工作,但似乎很慢。 我試圖用read(char[], int, int)
方法代替 - 我假設Java人已經更快地實現了它!
但是,它通過在字符串中添加所需字符然後完成,讓我有一個完整的字符數組。
根據Javadoc,它只會在達到EOF時執行此操作,或者「底層流的就緒方法返回false,表示進一步的輸入請求會阻塞」。誰能告訴我這是什麼意思?爲什麼如果一個一個地閱讀字符,它會發生什麼情況? (不能是EOF!)
爲什麼你認爲讀取數組對於緩衝讀取器來說要快得多?它是緩衝的! – bmargulies
爲什麼不直接說'
需要多長時間閱讀url?你應該期望IO操作的高延遲,如這個 – amit