带缓存的输入/输出流就是先将数据放在缓存区,当缓冲区达到一定的数据量时就会运输,这样可以加大一次运算的数据量,从而减少运输次数(即运输时间),可以大大提高数据运输的效率,达到性能的优化。
    常用的带缓存的输入/输出流的类有以字节形式传输的BufferedInputStream类、BufferedOutputStream类和以字符形式传输的BufferedReader类、BufferedWriter类。
    创建这些对象时,参数是需要使用带缓冲的对象。

    1. package MyPackage_1;
    2. import java.io.*;
    3. import java.util.ArrayList;
    4. import java.util.List;
    5. public class MyClass {
    6. public static void main(String[] args) {
    7. File f=new File("word.txt");
    8. List x=new ArrayList();
    9. x.add("在属于未来的星空,无畏闪耀!");
    10. x.add("花,是昨日之花;你的梦,是少年之梦!");
    11. x.add("瑞雪兆丰,齐迎百福。");
    12. try {
    13. FileWriter fw=new FileWriter(f);
    14. BufferedWriter bw=new BufferedWriter(fw);//使得fw带缓存
    15. for(int i = 0; i<x.size(); i++){
    16. bw.write((String) x.get(i));
    17. bw.newLine();//创建新的一行
    18. }
    19. bw.close();
    20. fw.close();
    21. /*
    22. 先创建的后关闭,后创建的先关闭;
    23. */
    24. } catch (IOException e) {
    25. e.printStackTrace();
    26. }
    27. try {
    28. FileReader fr=new FileReader(f);
    29. BufferedReader br=new BufferedReader(fr);//使得fr带缓存
    30. String s=null;
    31. while((s=br.readLine())!=null){//一行一行的读取
    32. System.out.println(s);
    33. }
    34. br.close();
    35. fr.close();
    36. /*
    37. 先创建的后关闭,后创建的先关闭;
    38. */
    39. } catch (Exception e) {
    40. e.printStackTrace();
    41. }
    42. }
    43. }

    运行结果:
    image.png
    image.png