黑马程序员技术交流社区
标题:
关于缓冲区的问题
[打印本页]
作者:
乔九
时间:
2013-2-24 18:24
标题:
关于缓冲区的问题
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
作者:
李挺
时间:
2013-2-24 18:26
本帖最后由 李挺 于 2013-2-24 18:51 编辑
错误了,编辑掉
作者:
王钊
时间:
2013-2-24 18:50
FileWriter确实存在缓冲区。
我翻阅了自己的技术博客,记录过
BufferedWriter提供带缓冲的字符流(实际上FileWriter也带缓冲区,BufferedWriter比FileWriter默认的缓冲区要大,并且效率要高)。
而且毕老师上课也说过,你可以放心用。
作者:
冯佩
时间:
2013-2-24 18:53
FileWriter只是个字符输入流,BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入,所以BufferedWriter才是高效的缓冲技术,该类有个跨平台的newLine()方法。FileWriter是有flush()方法的,因为它继承的父类Writer中有。
作者:
王宝生
时间:
2013-2-24 20:12
首先你应明白这里的缓冲区指i的是什么 ,有时候在不同的上下文中会有不同的含义。从我们程序员的角度来看,缓冲区其实就是个数组,有时我们显示的指定数组的大小,有时可以使用默认的大小(BufferWriter).
以后在磁盘和内存中进行数据传输时,就以这个缓冲区的大小来传送数据。举个例子,即使我们只从磁盘读取一个字节,那么操作系统也会从磁盘中一次性的读取4096个字节到这个缓冲区,以后进行读操作就会使用这个缓冲区的内容,而不必再进行磁盘访问了(因为访问磁盘的开销很大,访问一个磁盘的时间要好多个时钟周期)。
那么,因此不管是FileWrite还是什么Buffer....这样的类,他们内部肯定都有一个缓冲区,也就是一个数组。
希望你能明白
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2