关于I/O流中输入输出过程中利用装饰器所需了解的内容

来源:互联网 发布:虚拟数据库 编辑:程序博客网 时间:2024/04/30 16:00
从查JavaAPI上终于理清了一点,之前关于在转码过程中的对于字符缓冲流的一些认识。                        
1、字节输入流利用字节到字符输入转码器将字节转入字符输入流,装饰器利用字符缓冲输入流


InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 


每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 


为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: 


 BufferedReader in
   = new BufferedReader(new InputStreamReader(System.in));
       2、字节输出流利用字符到字节输出转码器将字符转入字节输出流,装饰器利用字符缓冲输出流


OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。 


每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给 write() 方法的字符没有缓冲。 


为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如: 


 Writer out
   = new BufferedWriter(new OutputStreamWriter(System.out));
0 0
原创粉丝点击