inputsteam每次读取一个字节,inputstreamreader可以将字节转换为characher,然后每次读取一个字符,读者每次都读取一个字符,那么它们之间有什么区别?
答案 0 :(得分:1)
InputStreamReader
处理编码。字符并不总是适合byte
(8位),字节值并不总是映射到同一个字符串,例如java char
使用16位来编码一个可以表示的字符更多不同的角色。
根据InputStream的来源,字符可以用ASCII(1字节),UTF-8(1或更多字节),UTF-16(2或4字节),utf-32(4字节)或任何其他现有的编码。给定Charset权限,Reader可以将原始字节转换为相应的java字符。
答案 1 :(得分:0)
来自JavaDocs:
输入流: 此抽象类是表示输入字节流
的所有类的超类输入流阅读器: 从字节流到字符流的桥接:它使用指定的字符集
读取字节并将其解码为字符流只是为您提供原始字节,读者可以将原始字节转换为不同编码的字符(ASCII / ISO / UTF)。
http://download.oracle.com/javase/6/docs/api/java/io/InputStream.html http://download.oracle.com/javase/6/docs/api/java/io/InputStreamReader.html http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html
答案 2 :(得分:0)
InputStreamReader是抽象类Reader的一个实现,它从InputStream中读取字符,根据给定的字符集转换字节。还有其他的Reader实现,例如StringReader,它从字符串返回字符,不需要任何字符集转换。