字符输出流FileWriter
1)完成一个简单在指定文件中写入数据的操作的步骤
A:创建字符输出流FileWriter对象(并且传入一个你要写入的位置)
FileWriter fw = new FileWriter("a.txt");
B:调用写数据的功能
fw.write("hello,io,我来了。祝你元旦快乐。");
C:刷新缓冲区
fw.flush();
D:释放资源(jvm不会自动回收流的资源,除非你手动标记该流已成为垃圾)
fw.close();
2)对简单在指定文件中写入数据的操作提出了疑问
①为什么FileWriter没有无参构造方法?
因为写数据的时候,一定要明确写道哪里去。
②既然close()也有刷新缓冲区的作用为什么还要flush呢?(flush()和close()的区别?)
flush():只刷新缓冲区,流对象还可以继续使用。
close():先刷新缓冲区,在关闭流对象。流对象不可以继续被使用。
③难道每次调用方法的时候,都需要刷新吗?或者说,不用刷,直接等到close()来解决,行不行?
两种方法都不可取,因为每写入一个字就调用一次flush的话,如果写入大量文字的时候
这时候效率就太低了,但是如果写入大量文字在缓冲区,直接等到close()再刷新的话如果文字太多,
不及时刷新缓冲区的话,又怕会内存溢出,所以要设置刷新间隔,比如下面代码是开发中常用的
int count = 0;
for (int x = 0; x < 1000000; x++) {
fw.write("hello,林青霞" + x);
if (++count % 10000 == 0) {
fw.flush();
}
}
|
|