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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔九 中级黑马   /  2013-2-24 18:24  /  1810 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itcast;
import java.io.*;
public class IODem {

        /**
         * @param args
         */
        public static void main(String[] args)throws IOException {
                // TODO Auto-generated method stub
                FileWriter fw1=new FileWriter("1.txt");
                fw1.write("jalksajglk");
                fw1.flush();
               
               

        }

}此程序在运行的时候系统不是已经建立了缓冲区了吗,怎么在后面的视频中又说到BufferWriter

4 个回复

倒序浏览
本帖最后由 李挺 于 2013-2-24 18:51 编辑

错误了,编辑掉
回复 使用道具 举报
FileWriter确实存在缓冲区。
我翻阅了自己的技术博客,记录过
BufferedWriter提供带缓冲的字符流(实际上FileWriter也带缓冲区,BufferedWriter比FileWriter默认的缓冲区要大,并且效率要高)。
而且毕老师上课也说过,你可以放心用。
回复 使用道具 举报
FileWriter只是个字符输入流,BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入,所以BufferedWriter才是高效的缓冲技术,该类有个跨平台的newLine()方法。FileWriter是有flush()方法的,因为它继承的父类Writer中有。
回复 使用道具 举报
     首先你应明白这里的缓冲区指i的是什么 ,有时候在不同的上下文中会有不同的含义。从我们程序员的角度来看,缓冲区其实就是个数组,有时我们显示的指定数组的大小,有时可以使用默认的大小(BufferWriter).
     以后在磁盘和内存中进行数据传输时,就以这个缓冲区的大小来传送数据。举个例子,即使我们只从磁盘读取一个字节,那么操作系统也会从磁盘中一次性的读取4096个字节到这个缓冲区,以后进行读操作就会使用这个缓冲区的内容,而不必再进行磁盘访问了(因为访问磁盘的开销很大,访问一个磁盘的时间要好多个时钟周期)。
     那么,因此不管是FileWrite还是什么Buffer....这样的类,他们内部肯定都有一个缓冲区,也就是一个数组。
     希望你能明白
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马