FileInputStream的read方法每次读取1个字节,但它正在读取文件中的字符,因为java中的字符大小为(16 bit-2 Bytes)。是因为read方法是原生的,它会转换为8位吗?
答案 0 :(得分:2)
read
读者的FileInputStream
方法会返回int
(相当于byte
),而不是字符。将结果转换为角色是你的责任。
由于FileInputStream
的javadoc建议:“为了读取字符流,请考虑使用FileReader”。
对字符进行编码的字节数取决于文件的编码。例如,如果文件使用ASCII编码,则每个字节都是一个字符,但如果您的文件以UTF-8编码,则字符为1,2,3或4个字节。
如果您想了解有关编码的更多信息,建议您阅读以下文章:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。