本帖最后由 2666fff 于 2015-6-7 13:46 编辑
提高悬赏,来个官方正式点的回答。没人答出为什么我说的不对,我就一直加悬赏。
我的回答是:当BufferedReader在读取文本文件时,会先从文件中读入数据,并置入其所提供的缓冲区,
然后后面的byte[] 数组br.read()方法,会先从缓冲区中进行读取。
然后老师说让我在好好想想,因为当时还专门看过这个,于是我觉得我赵日天不服。
然后我goolge了一下,发现对于这个网络上有两种解释:
1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
来源 http://xyiyy.iteye.com/blog/361476
这个基本跟我说的一样。
第二种:
这么说吧,这个类就是一个包装类,它可以包装字符流,将字符流放入缓存里,先把字符读到缓存里,到缓存满了或者你flush的时候,再读入内存,就是为了提供读的效率而设计的。
来源:
http://zhidao.baidu.com/link?url=53hXzhh70y4Dny5w9faS2pIPdrLc1vZnccZNEoLtzKi-vCa7KnzNOZMH-ZPBUPvIf0wBo0WrIl9YPsvkHaSBJa
这个没提到之后从缓冲区再怎么read,所以我就不是很明白了。
再查看java 自带API:
java.io
Class BufferedReader
public class BufferedReader
extends Reader
Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.
api中也只说了,它提供足够大的buffer,用来buffering characters, 可以调高读取效率,但是没有说为何提高,如何提高,
那么问题就来了:
挖掘机技术到底哪家强?
回答的请专业点,一两行就觉得能完事的就不要来了,回答的好有加分哦。
最好当时面试的那个男老师能来帮我解答一下。
|