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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zhrnghgwsws 于 2014-5-19 21:24 编辑

如题:FileWriter中已经有默认的缓冲区了,为什么还要创建BufferedWriter缓冲区?

2 个回复

倒序浏览
import java.io.*;
public class _01_FileWrite写入文件 {
       
        public static void main(String[]args)throws IOException
        {
                //第一步:
                //创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
                FileWriter fw = new FileWriter("Demo.txt");
               
                //第二步:将字符串写入流中
                fw.write("abcde");
               
                //第三步:刷新对象中缓冲中的数据,将数据刷新到目的地中
                fw.flush();
               
                //第四步:关闭流资源
                fw.close();
               
        }
}


*
* BufferedWriter:缓冲区
*
* 缓冲区的出现是为了提高流的操作效率而出现的。
*
* 所以创建缓冲区之前必须要有流对象。
*
* 该缓冲区中提供了一个跨平台的换行符:newLine();
*/

import java.io.*;
public class _08_BufferedWriter {
       
        public static void main(String[]args)throws IOException
        {
                //创建一个字符写入流对象
                FileWriter fw = new FileWriter("Demo.txt");

                BufferedWriter buf = new BufferedWriter(fw);
               
                for(int x=0;x<5;x++)
                {
                        buf.write("abdsafa"+x);
                        buf.newLine();
                        buf.flush();
                }
               
               
                buf.close();
        }

}


FileWriter的刷新是将缓冲区中的数据刷新到目的文件中,而BufferedWriter缓冲区的出现,是为了提高流的操作效率出现的。所以创建缓冲区之前必须要有流对象。该缓冲区中提供了一个跨平台的换行符:newLine();
回复 使用道具 举报
这个问题问的很有水平,我觉得是这样的:使用FileWriter的时候随意性比较大,它可以对单个的、不需要缓冲区操作的字符进行写入,也可以自定义缓冲区来将字符写入到缓冲区再进行其它操作,也就是说使用FileWriter不一定会有缓冲区存在;而使用BufferedWriter时是一定有缓冲区存在的,但他们的确存在很多的共同点和相似之处,BufferedWriter的内部实现也用到了FileWriter和缓冲区对象,可能说使用BufferedWriter是对FileWriter和数组缓冲区的一种封装,目的是为了让开发者使用起来更加方便。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马