A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 fengjietian 于 2015-7-31 20:13 编辑

java.io 中, BufferedReader除了多出一个 readLine()函数, 还有什么区别吗? 好像FileReader也可以把输入流读取到一个缓冲区中间。


  1. import java.io.*;

  2. public class InputOutPutDemo {
  3.         static String srcPath = "src/InputOutPutDemo.java";
  4.         static String destPath = "C:/testDemo.java";

  5.         public static void main(String[] args) {
  6.                 copyFile3();
  7.         }
  8.         

  9.         //BufferedReader BufferedWriter
  10.         static void copyFile2() {
  11.                 BufferedReader br = null;
  12.                 BufferedWriter bw = null;
  13.                 try {
  14.                         br = new BufferedReader(new FileReader(srcPath));
  15.                         bw = new BufferedWriter(new FileWriter(destPath));
  16.                         char[] buf = new char[1024];
  17.                         int num = 0;
  18.                         while((num = br.read(buf)) != -1) {
  19.                                 bw.write(buf, 0, num);
  20.                                 bw.flush();
  21.                         }
  22.                 } catch(IOException e) {
  23.                         e.printStackTrace();
  24.                 } finally {
  25.                         try {
  26.                                 if(br != null)
  27.                                         br.close();
  28.                                 if(bw != null)
  29.                                         bw.close();
  30.                         } catch(IOException e) {
  31.                                 e.printStackTrace();
  32.                         }
  33.                 }
  34.         }
  35.         
  36.         //FileReader FileWriter
  37.         static void copyFile() {
  38.                 FileReader fr = null;
  39.                 FileWriter fw = null;
  40.                
  41.                 try {
  42.                         fr = new FileReader(srcPath);
  43.                         fw = new FileWriter(destPath);
  44.                         char[] buf = new char[10];
  45.                         int num = 0;
  46.                         
  47.                         while((num = fr.read(buf)) != -1) {
  48.                                 fw.write(buf, 0, num);
  49.                                 fw.flush();

  50.                         }
  51.                 } catch(FileNotFoundException e) {
  52.                         e.printStackTrace();
  53.                 } catch(IOException e) {
  54.                         e.printStackTrace();
  55.                 } finally {
  56.                         try {
  57.                                 if(fr != null)
  58.                                         fr.close();
  59.                                 if(fw != null)
  60.                                         fw.close();
  61.                         } catch(IOException e) {
  62.                                 e.printStackTrace();
  63.                         }
  64.                 }
  65.         }
  66. }
  67.         
复制代码

就像上面的代码, FileReader不是也用了缓冲区buf吗, 为什么还要另外有一个类BufferedReader?

2 个回复

倒序浏览
即使用了缓冲区,他俩的基本原理都一个一个字节的读入,这个缓冲跟那个缓冲不是一个缓冲。应该是这样
回复 使用道具 举报
FileReader是字符输入流,BufferedReader是高效字符输入流,听名字就知道BufferedReader的速度更快啊,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马