BufferedReader
をラップしているから読んでいInputStreamReader
ます。ストリームは、次の URL から取得されます。myURL.openStream();
ストリームの一部 ( と の間の文字) を読み取り、テキスト ファイルに保存しようとしstartPos
てendPos
いString
ます。
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 に達した場合、または「基になるストリームの ready メソッドが false を返し、それ以上の入力要求がブロックされることを示している」場合にのみこれを行います。誰がこれが何を意味するのか教えてもらえますか? そして、文字を 1 つずつ正しく読み取ると、なぜそれが起こるのでしょうか? (EOF にすることはできません!)