黑马程序员技术交流社区

标题: BufferWriter问题 [打印本页]

作者: 刘凯    时间: 2013-2-17 23:07
标题: BufferWriter问题
本帖最后由 刘凯 于 2013-3-21 21:00 编辑

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

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

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

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

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

求指教
作者: walkonby    时间: 2013-2-18 09:14
BufferedWriter/BufferedReader 说他效率高是因为他在单纯的读取和输出上加了一个临时存储数据的数组
在用的时候他会根据缓冲区中的缓冲数组大小读取数据到这个数组里然后在对数组进行操作
这里就是他提高效率的地方 有了这数组之后他不会再一次一次的用IO去读
而是直接拿数组的
作者: 刘凯    时间: 2013-2-22 11:33
张政 发表于 2013-2-18 09:14
BufferedWriter/BufferedReader 说他效率高是因为他在单纯的读取和输出上加了一个临时存储数据的数组
在用 ...

我知道 它里边有个数组 进行缓冲  我就是问 它里边的原理是怎么着的  这个数组是怎么实现的  
作者: 张一凡    时间: 2013-2-22 16:47
private static int defaultCharBufferSize = 8192;

看源码
作者: walkonby    时间: 2013-2-23 06:47
刘凯 发表于 2013-2-22 11:33
我知道 它里边有个数组 进行缓冲  我就是问 它里边的原理是怎么着的  这个数组是怎么实现的   ...

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




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