我应该先转换哪个字节流,缓冲区流或char流?

时间:2019-05-26 16:37:22

标签: java io

要获得给定字节流的缓冲char流,我应将字节流转换为第一个,缓冲流还是char流?

  1. 给出一个OutputStream对象os(例如FileOutputStream 对象或System.out),似乎有两种方法可以获取 缓冲的字符流:

    new BufferedWriter(new OutputStreamWriter(os));
    
    new OutputStreamWriter(new BufferedOutputStream(os));
    

    它们之间有什么区别?

  2. 给出一个InputStream对象is(例如FileInputStream对象 或System.in),似乎有两种获取缓冲字符的方法 流:

    new BufferedReader(new InputStreamReader(is));
    
    new InputStreamReader(new BufferedInputStream(is));
    

    它们之间有什么区别?

1 个答案:

答案 0 :(得分:0)

  1. OutputStreamWriter的javadoc中所述
  

传递到write()方法的字符不被缓冲。
  为获得最高效率,请考虑将OutputStreamWriter包装在BufferedWriter中,以避免频繁的转换器调用。例如:
  Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

由于转换后得到的字节累积在缓冲区中,因此不需要在OutputStreamWriter之后通过管道插入BufferedStream

因此,常规方法是使用:

new BufferedWriter(new OutputStreamWriter(os));
  1. InputStreamReader的类似原因

使用:

new BufferedReader(new InputStreamReader(is));