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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝强勇 中级黑马   /  2013-2-23 13:21  /  1948 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 haohao827 于 2013-2-26 09:25 编辑

import java.io.*;
class  FileWriterDemo
{
        public static void main(String[] args) throws IOException
        {

                FileWriter fw = new FileWriter("demo.txt",true);

                fw.write("nihao\r\nxiexie");

                fw.close();
        }
}


import java.io.*;
class  BufferedWriterDemo
{
public static void main(String[] args) throws IOException
{
    FileWriter fw = new FileWriter("buf.txt");
  
   BufferedWriter bufw = new BufferedWriter(fw);
  for(int x=1; x<5; x++)
  {
   bufw.write("abcd"+x);
   bufw.newLine();
   bufw.flush();
  }
    bufw.close();

}
}
上述两段代码,第一段没有用到bufferedwriter缓冲区,第二段用到了bufferedwriter缓冲,
但第一段代码也是将数据先写到缓冲区,在flush或是close后将数据刷出缓冲区,而第二段
bufferedwriter也是缓冲区,两者有什么不一样的啊,第二种喝第一种的缓冲区有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 鼓励一下,希望尽快改成自己的名字.

查看全部评分

5 个回复

倒序浏览
哥们问题都提错了...自己改下在来提问吧.
回复 使用道具 举报
我的意思就是,如果不用BufferedReader 而直接用reader的write方法,也有缓冲的功效,需要flush才能将数据刷出来,
不用BufferedReader 和用BufferedReader 的两个缓冲区有什么不同,问题没错啊。
回复 使用道具 举报
当FileWriter向文件写入数据时,系统不会读一个字符,然后向文件硬盘中写入,而是在内存中开辟一块缓冲地带,系统把要写入的数据存入缓冲区,当缓冲区满时,系统会将数据全部发送到缓冲区,如果未满就要传输,就必须使用flush刷新了,同理,BuffeedrReader自带了一个缓冲区,毕老师讲系统把读到的数据存入自带缓冲区,可以reaLline,当读到换行符时就返回。总之FileWriter缓冲区是系统给的,BufferedReader是自带的!
回复 使用道具 举报
FileWriter缓冲区是系统给的,BufferedWriter是自带的,但不都是在内存索要空间进行临时存储吗?
我就是不明白BufferedWriter效率高在什么地方?
回复 使用道具 举报
haohao827 发表于 2013-2-23 14:19
FileWriter缓冲区是系统给的,BufferedWriter是自带的,但不都是在内存索要空间进行临时存储吗?
我就是不 ...

效率高在它可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马