本帖最后由 郝强勇 于 2013-3-1 14:19 编辑
先看下面这段弱弱的代码:
package cn.itheima.io;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
public class Demo {
public static void main(String[] args) {
FileWriter fw = null;//创建字符写入流对象引用
FileOutputStream fos = null;//创建字节输出流对象引用
try {
fw = new FileWriter("F:\\Demo1.txt");
fos = new FileOutputStream("F:\\Demo2.txt");
String str = "Hello Heima!!!";
fw.write(str);//使用字符流向文件写出
fos.write(str.getBytes());//使用字节流向文件写出
} catch (IOException e) {
e.printStackTrace();
}
//没有在finally块中对两个流进行close关闭
}
}
在代码的末端未对流进行关闭,我们知道字节输出流OutputStream不需要刷新就会将代码直接写入物理设备中,我在运行后会发现FileWriter操作的文件Demo1.txt没有数据,FileOutputStream操作的文件Demo2中有数据,这属于正确运行,但是FileOutputStream不需要刷新为什么我在查API的时候也发现了它有flush()方法呢,我百思不得其解啊?
(备注:论坛名已提交修改,等待ing) |