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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 昝文萌 中级黑马   /  2013-9-3 16:26  /  1685 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 昝文萌 于 2013-9-5 12:10 编辑
  1. FileWriter fw = new FileWriter("a.txt");
  2. fw.writer("abcdef");//这个是把数据写入流里面,只有刷新过之后才能写入硬盘!
复制代码
这不是也相当于一个缓冲区吗?写完一堆数据之后再刷新到硬盘!那么BufferedWriter这个也是缓冲
  1. BufferedWriter bufw = new BufferedWriter(fw);
  2. bufw.writer("abcdef");
复制代码
它们在底层的区别是什么?写到流里面和写到缓冲区里面有什么不同,写到流里面的数据是在哪存着的?求大神!


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
其实对于这一块儿我也不是太清楚,但是我自己的理解呢就是:这个输入输出流是为了操作数据的进进出出而存在的一个对象。至于具体使用什么样的流(字符还是字节)那就要看你要操作的是什么素具;正如你这里的FileWriter ,它可以创建一个操作(输出)字符的流对象。这样就仅仅是要做这样的操作(输出数据)的第一步,也就是建了一条路而已,还没有到缓冲的那一步呢,FileWriter 的流对象它一次可以操作一个字符,而BufferedWriter只是先将这一个个的字符缓存在一个地方,然后他一次可以操作一行,这样效率就比较高了。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
底层应该都是一样的吧,毕竟是将FileWriter传入缓冲区,而缓冲区要结合流才可以使用,在流的基础上对流的功能进行了增强。写入到流里面的数据应该是在内存里面存着。我觉得在API里面说到的例子就很好说明了写入缓冲区和写入到流里面的区别,
PrintWriter out   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

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