FileWriter 缺点
FileWriter
频繁调用 write()
方法,写少量数据,会立即将数据写到硬盘,这样会导致效率低下
解决
使用 BufferedWriter
类,调用 write()
方法时,先将数据写入到 缓冲区 中,缓冲区是 字符数组,长度是 8192 个字符
调用 flush()
、close()
方法后,才会将数据写到硬盘
例子
public static void main(String[] args) {
String sep = System.getProperty("line.separator");
System.out.println("换行符:"+sep);
BufferedWriter bw = null;
FileWriter fw = null;
try {
fw = new FileWriter("d:\\1.txt");
bw = new BufferedWriter(fw);
bw.write("人生无常,大肠包小肠");
bw.write("床前明月光"+sep);
// 调用flush(),立即向硬盘写文件 ,后面还可以继续写数据
bw.flush();
bw.write("疑是地上霜"+sep);
bw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally{ // 一定会执行的代码,close() 代码都写在该块中
if(bw != null){
try {
bw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fw != null){
try {
fw.close();// 不执行此方法,文件一直被占用,无法删除,写入数据失败
// fw.write("close() 后不能再写数据");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}