InputStreamReader类是字节流通向字符流的桥梁:它使用指定的charset(字符集)读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用InputStreamReader中的一个read()方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
实例:通过InputStreamReader类将指定的字节输入流转换字符输入流,然后使用转换后的字符流来创建BufferedReader对象。
package io.reader; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class InputStreamReaderTest { public static void main(String[] args) { BufferedReader reader = null; try { reader = new BufferedReader( new InputStreamReader( new FileInputStream("document/reader.txt"))); String line = ""; while ( (line = reader.readLine()) != null ) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } finally { if ( null != reader ) { try { reader.close(); reader = null; } catch (IOException e) { e.printStackTrace(); } } } } }
输出结果:
静夜思 床前明月光,疑是地上霜。 举头望明月,低头思故乡。