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();
}
}
}
}
}输出结果:
静夜思 床前明月光,疑是地上霜。 举头望明月,低头思故乡。