JAVA BufferedWriter 类 作者:马育民 • 2022-07-01 12:05 • 阅读:10063 # FileWriter 缺点 `FileWriter` 频繁调用 `write()` 方法,写少量数据,会立即将数据写到硬盘,这样会导致效率低下 [![](/upload/0/0/1IX3b3Qe8Zjj.png)](/upload/0/0/1IX3b3Qe8Zjj.png) ### 解决 使用 `BufferedWriter` 类,调用 `write()` 方法时,先将数据写入到 **缓冲区** 中,缓冲区是 字符数组,长度是 8192 个字符 调用 `flush()` 、`close()` 方法后,才会将数据写到硬盘 [![](/upload/0/0/1IX3b3V0CHd7.png)](/upload/0/0/1IX3b3V0CHd7.png) # 例子 ``` 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(); } } } } ``` 原文出处:http://malaoshi.top/show_1IX3b3Vc68W8.html