黑马程序员技术交流社区

标题: 为什么输入输出流被包装后,读写效率会大幅提升,我会使用但是不甚理解其中的原理. [打印本页]

作者: pigdanny    时间: 2016-7-9 18:27
标题: 为什么输入输出流被包装后,读写效率会大幅提升,我会使用但是不甚理解其中的原理.
为什么输入输出流被包装后,读写效率会大幅提升,我会使用但是不甚理解其中的原理.
作者: 孟小垚    时间: 2016-7-9 19:46
就是原先是一个字节一个字节的读写,包装以后是1M的读写的
作者: 阿卜    时间: 2016-7-9 23:22
BufferedReader的最大特点就是缓冲区的设置。通常Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。  使用BufferedReader可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。  因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和InputStreamReader)。
作者: 阿卜    时间: 2016-7-9 23:24
正好前几天遇到这个问题,所以去找了下解答:以下资料来自网络:
BufferedReader的最大特点就是缓冲区的设置。通常Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
使用BufferedReader可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和InputStreamReader)。
作者: pigdanny    时间: 2016-7-10 08:53
阿卜 发表于 2016-7-9 23:24
正好前几天遇到这个问题,所以去找了下解答:以下资料来自网络:
BufferedReader的最大特点就是缓冲区的设 ...

讲解的很精辟,这个问题终于懂了.
作者: pigdanny    时间: 2016-7-10 08:56
孟小垚 发表于 2016-7-9 19:46
就是原先是一个字节一个字节的读写,包装以后是1M的读写的

感谢你给我的解释,还是有些道理的.  阿卜的这个解释更加准确,可以看看.
BufferedReader的最大特点就是缓冲区的设置。通常Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。  使用BufferedReader可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。  因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和InputStreamReader)。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2