黑马程序员技术交流社区
标题:
关于IO中缓冲区的问题
[打印本页]
作者:
郝强勇
时间:
2013-2-23 13:21
标题:
关于IO中缓冲区的问题
本帖最后由 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也是缓冲区,两者有什么不一样的啊,第二种喝第一种的缓冲区有什么区别吗?
作者:
罗海云
时间:
2013-2-23 13:42
哥们问题都提错了...自己改下在来提问吧.
作者:
郝强勇
时间:
2013-2-23 13:56
我的意思就是,如果不用BufferedReader 而直接用reader的write方法,也有缓冲的功效,需要flush才能将数据刷出来,
不用BufferedReader 和用BufferedReader 的两个缓冲区有什么不同,问题没错啊。
作者:
王晓楠
时间:
2013-2-23 14:03
当FileWriter向文件写入数据时,系统不会读一个字符,然后向文件硬盘中写入,而是在内存中开辟一块缓冲地带,系统把要写入的数据存入缓冲区,当缓冲区满时,系统会将数据全部发送到缓冲区,如果未满就要传输,就必须使用flush刷新了,同理,BuffeedrReader自带了一个缓冲区,毕老师讲系统把读到的数据存入自带缓冲区,可以reaLline,当读到换行符时就返回。总之FileWriter缓冲区是系统给的,BufferedReader是自带的!
作者:
郝强勇
时间:
2013-2-23 14:19
FileWriter缓冲区是系统给的,BufferedWriter是自带的,但不都是在内存索要空间进行临时存储吗?
我就是不明白BufferedWriter效率高在什么地方?
作者:
王晓楠
时间:
2013-2-23 15:01
haohao827 发表于 2013-2-23 14:19
FileWriter缓冲区是系统给的,BufferedWriter是自带的,但不都是在内存索要空间进行临时存储吗?
我就是不 ...
效率高在它可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2