您的位置:首页 > 其它

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

2017-03-23 20:41 274 查看
从查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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: