0

FileInputStream 的 read 方法每次都会读取 1 个字节,但它正在读取文件中的字符,因为 java 中的字符大小是(16 bit-2 Bytes)。是因为 read 方法是本机的,它会转换为 8 位吗?

4

1 回答 1

2

reader的read方法返回一个(等价于 a ),而不是一个字符。将结果转化为角色是您的责任。FileInputStreamintbyte

正如FileInputStream建议的 javadoc:“对于读取字符流,请考虑使用 FileReader”。

对字符进行编码的字节数取决于文件的编码。例如,如果文件是用 ASCII 编码的,那么每个字节就是一个字符,但如果你的文件是用 UTF-8 编码的,那么一个字符就是 1、2、3 或 4 个字节。

如果您想了解有关编码的更多信息,我建议您阅读以下文章:每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最低要求(没有借口!)

于 2013-04-11T06:08:09.407 回答