日期:2014-05-17  浏览次数:20767 次

java输入输出流关闭问题
在用完java输入输出流后一定要关闭该流吗?还有flush()方法具体作用。
在流外又套一层流:(比如)

FileReader fr=new FileReader("D:/zyliu.txt");
BufferedReader br=new BufferedReader(fr);
.....
...


最后要关闭时,fr和br都要关闭吗?关闭时fr,br有先后顺序吗

------解决方案--------------------
flush

public void flush()
throws IOException

刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。

如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。

OutputStream 的 flush 方法不执行任何操作。

指定者:
接口 Flushable 中的 flush

抛出:
IOException - 如果发生 I/O 错误。


最后要关闭时,fr和br都要关闭吗?关闭时fr,br有先后顺序吗
〉〉〉从外向内




------解决方案--------------------
流用完之后要关闭了,先关闭fr再关br
flush是将磁盘和缓存的数据同步了,保证能将这些字节实际写入到物理磁盘设备中!!!

------解决方案--------------------
先关br再关fr 关闭的时候最好加上try{}catch{}保护