黑马程序员技术交流社区

标题: FileWriter中的缓冲区与BufferedWriter中的缓冲区有什么不同? [打印本页]

作者: rover0321    时间: 2014-6-15 00:22
标题: FileWriter中的缓冲区与BufferedWriter中的缓冲区有什么不同?
FileWriter 中需要调用flush 方法将缓冲区的字符写入文件,说明FileWriter 是有缓冲区的。而BufferedWriter 中也有缓冲区,那么两者的缓冲区有什么不同呢?


作者: lucky_man    时间: 2014-6-15 02:21
FileWriter:你每写一个数据,硬盘就有一个写动作,性能极差
BufferedWriter: 加了一个缓冲,缓冲写满后在将数据写入硬盘这样做极大的提高了性能
在BufferedWriter提供了一个特殊的方法
void newLine() 写入一个新行
原因在于Windows Linux换行符号不一样
Windows \r\n   Linux \n
newLine()方法,具有跨平台性
作者: rover0321    时间: 2014-6-15 13:37
百度了一番,发现好多人都在问这样的问题,求大神解答。
作者: 友来友网    时间: 2014-6-15 13:59
都是缓冲区,没什么区别,知识说BufferedWriter 功能更强大
作者: 帅哥哥    时间: 2014-6-15 14:48
我觉着缓冲区本身是没有什么不同的,但是提供的功能有大小之分 ^^
作者: 武维京    时间: 2014-6-15 15:43
套用毕老师的例子
相信你会懂的

水一滴一滴的往下流 ,用嘴一滴一滴的接着好,还是用水杯接满后一饮而尽爽?
然后你在看看二楼的回答 应该就明白了!!
作者: zhohao    时间: 2014-6-15 16:36
效率不同,BufferedWriter效率高一些
作者: 卞新浩    时间: 2014-6-15 18:01
相当于装饰
作者: rover0321    时间: 2014-6-15 18:02
友来友网 发表于 2014-6-15 13:59
都是缓冲区,没什么区别,知识说BufferedWriter 功能更强大

确实是,我看了一下java的源码,发现两者是独立的buffer 。
作者: rover0321    时间: 2014-6-15 18:03
zhohao 发表于 2014-6-15 16:36
效率不同,BufferedWriter效率高一些

感觉是对Writer和Reader的进一步优化。
作者: GoodBoy123    时间: 2014-6-15 18:04
带缓冲区,而且方法好用。
作者: 墓____夜    时间: 2014-6-17 09:42
怎么说呢。
自定义缓冲区 可以自定义 缓存数组的字节长度 , 可以使1024  也可以是8192 但是不能过大  , 会造成内存溢出
而buffer缓冲区呢  首先 new BufferedRead( new  InputStreamReader(new FileReader))
就是说bufferedreader 必须跟 字节通向字符的桥梁一起使用 ,  同时 bufferedreader 缓冲区大小 默认是8192 个
作者: crazystraw    时间: 2014-6-17 10:13
同求,感觉没有回答的很到位的啊
作者: pengyu    时间: 2014-6-17 10:29
进来学习下
作者: Hi天天向上    时间: 2014-6-17 12:24
墓____夜 发表于 2014-6-17 09:42
怎么说呢。
自定义缓冲区 可以自定义 缓存数组的字节长度 , 可以使1024  也可以是8192 但是不能过大  ,  ...

new BufferedRead( new  InputStreamReader(new FileReader))
哥们 这句好像有点问题吧  BufferedReader本来就是字符缓冲流  最后的FileReader不能用InputStreamReader这样的转换流
作者: 师偃    时间: 2014-6-17 12:41
加个BufferedWriter便于操作FileWter写入的文件吧




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