黑马程序员技术交流社区
标题:
BufferedReader为什么要与new InputStreamReader()配套用,是什么原因
[打印本页]
作者:
王新新
时间:
2013-5-22 15:57
标题:
BufferedReader为什么要与new InputStreamReader()配套用,是什么原因
本帖最后由 王新新 于 2013-5-22 16:58 编辑
BufferedReader为什么要与new InputStreamReader()配套用,是什么原因?
InputStreamReader起什么作用呢
作者:
liuelxiwd
时间:
2013-5-22 16:06
也不一定啊亲,可以用其他的,比如:
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
然后给你解释,为什么常见它们配套使用:
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
作者:
eycrckag
时间:
2013-5-22 16:11
nputStreamReader 是字节流通向字符流的桥梁。放在一起用只是为了提高效率。缓冲区要结合流才可以使用。是在流的基础上对流的功能进行增强!这样说可以吗?
作者:
ozt6719393
时间:
2013-5-22 16:32
InputStreamReader 是转换流,字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
BufferedReader 的构造函数中有个带参数的,参数是字符流,所以不能放字节流,得先用InputStreamReader进行转换就可以了。
希望对你的理解有帮助
作者:
王新新
时间:
2013-5-22 16:58
谢谢楼上的,明白点了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2