关于输入输出流的心得

2013-12-28 15:12:27

类 InputStreamReader
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集
每次调用 InputStreamReader 中的一个 read()() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)), "GBK"));
注: 此法可读取编码格式为GBK的TXT文件,而不乱码。

类 BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read()() 操作可能开销很高的 Reader(如: FileReader 和 InputStreamReader)。例如:
BufferedReader in = new BufferedReader(new FileReader(path));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read()() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化
posted @ 2013-12-28 15:16  黑壳的蜗牛  阅读(325)  评论(0编辑  收藏  举报