因为内置缓冲区的原因,如果不关闭流,无法写出字符到文件中。但是关闭流对象,是无法继续写出数据的。如果
我们既想写出数据,又想继续使用流。就需要flush方法了
flush:刷新缓冲区,流对象可以继续使用
close:先刷新缓冲区,然后通知系统释放资源。流对象就不可以被使用了
一句话,关闭流,就不能写入数据了,刷新后可以继续调用write方法继续写入
package com.baidu.字节输入输出流;
import java.io.FileWriter;
import java.io.IOException;
public class CloseFlush {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("F:\\develop\\h.txt");
fw.write(97);
fw.flush();
//刷新。流可以继续使用
fw.write(97);
fw.flush();
fw.close();
//close后,流就不能继续使用了
}
}
==========================
如果在关闭流后继续写入数据会报错(错误代码!!!!!)
package com.baidu.字节输入输出流;
import java.io.FileWriter;
import java.io.IOException;
public class CloseFlush {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("F:\\develop\\h.txt");
fw.write(97);
fw.flush();
//刷新。流可以继续使用
fw.write(97);
fw.flush();
fw.close();
//close后,流就不能继续使用了
fw.write(99);
}
}
Exception in thread "main" java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:45)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:118)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:113)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:194)
at com.baidu.字节输入输出流.CloseFlush.main(CloseFlush.java:16)
会出现流关闭异常。。。。