我正在阅读一个文件:
char [] buffer = new char[300];
FileInputStream istream = new FileInputStream(path);
InputStreamReader file = new InputStreamReader(istream);
size = file.read(buffer);
file.close();
经过几次尝试,结果证明file.read(buffer)
读取的字符数与为缓冲区分配的字符数完全相同(在本例中为 300,即使文件中有更多字符)。
我可以依靠 read() 总是尽可能多地阅读而不产生任何异常吗?
或者这是一个未记录的功能?
读取方法描述说:
从该读取器读取字符并将它们存储在从偏移量 0 开始的字符数组 buf 中。返回实际读取的字符数,如果已到达读取器的末尾,则返回 -1。
没有提到缓冲区分配问题。这非常重要,而且它以这种方式工作是一件好事,因为它允许您根据需要/需要定义缓冲区的大小,无需猜测,无需为异常编写代码。实际上,它是,read(char[] buffer)
但它的工作原理是read(char[] buffer, int size)
.