A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘凯 金牌黑马   /  2013-2-17 23:07  /  4229 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘凯 于 2013-3-21 21:00 编辑

菜鸟请教
BufferReader  中有一个readLine() 这个可以直接读取一行数据 从而提高效率 这个清楚了

请教 BufferWriter 只比Writer方法多了一个newLine() 的方法 别貌似都跟Writer方法都一样 不晓得提高效率反映在哪?

如果说  BufferWriter 是先把数据写入缓冲区 flush() 后一次性写入硬盘的方法来来提高效率
那貌似 Writer 也是先把数据写入流 在flush() 或者close() 刷新后才写入硬盘的  这么说来貌似Writer 也有缓冲的能力。

再有BufferWriter  缓冲区有多大 ,如果一个很大分文件要写入 而不再中间进行flush()   缓冲区会不会满 ,如果满了是不是自动写入硬盘?

还有 BufferOutputStream 有是怎么提高OutputStream的效率的  ?

求指教

5 个回复

倒序浏览
BufferedWriter/BufferedReader 说他效率高是因为他在单纯的读取和输出上加了一个临时存储数据的数组
在用的时候他会根据缓冲区中的缓冲数组大小读取数据到这个数组里然后在对数组进行操作
这里就是他提高效率的地方 有了这数组之后他不会再一次一次的用IO去读
而是直接拿数组的

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
张政 发表于 2013-2-18 09:14
BufferedWriter/BufferedReader 说他效率高是因为他在单纯的读取和输出上加了一个临时存储数据的数组
在用 ...

我知道 它里边有个数组 进行缓冲  我就是问 它里边的原理是怎么着的  这个数组是怎么实现的  
回复 使用道具 举报
private static int defaultCharBufferSize = 8192;

看源码
回复 使用道具 举报
刘凯 发表于 2013-2-22 11:33
我知道 它里边有个数组 进行缓冲  我就是问 它里边的原理是怎么着的  这个数组是怎么实现的   ...

你自己用字节流或者字符流读取的时候,创建一个数组,每次读一个数组的数据,然后操作的就是这个数组的数据,等这个数组里的数据操作完了又会用IO读一个数组的数据......for.....
回复 使用道具 举报
在字节流操作的时候,我认为buffered方法并不一定高效,我测试过自己定义个大小合适的数组,然后直接用输入流的read方法读文件,在有些时候甚至比buffered更快,因为缓冲区技术其实是系统默认给了一个所谓大小合适的数组做缓冲,其实这个数组完全可以自己定义,但是在字符流中,buffered不仅仅是加缓冲数组,更高校在于它的其他增强方法,如readline或者newline。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马