我正在阅读 a BufferedReader
,它正在包装 a InputStreamReader
。流来自一个 URLmyURL.openStream();
我正在尝试将流的一部分(和之间的字符startPos
)endPos
读入 aString
然后将其存储在文本文件中。
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 人员已经更快地实现了它!
但是 - 它通过将所需字符添加到字符串中大约一半然后完成,给我留下一个半满的 char 数组。
根据 Javadoc,它仅在达到 EOF 或“底层流的就绪方法返回 false,表明进一步的输入请求将阻塞”时才会这样做。谁能告诉我这是什么意思?如果一个一个地读取字符可以正常工作,为什么会发生这种情况?(不能是EOF!)