Java 文件输入流一次读取 8 位或 16 位



我从 https://docs.oracle.com/javase/tutorial/essential/io/bytestreams.html 开始学习Java中的Basic IO

ByteStream 一次读取一个字节(8 位(。但是字符以 16 位 unicode 字符存储 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

我的问题或困惑是,如果字符以 16 位存储,那么一次读取 8 位的 FileInputStream 读取方法如何读取 16 位(哪个字符存储在内部(?

在 Java 中,字符串存储为char值数组,char是 16 位UTF-16编码值。一些 Unicode 字符(例如表情符号(被编码为 2char值。

文件是字节序列,因此要将字符串存储在文件中,必须对字符串进行编码。编码称为字符集,具体取决于您使用的字符集,字符是否占用 1 个字节、2 个字节或更多。

如今,文件通常以 UTF-8 编码,因此 Unicode 字符需要 1 到 4 个字节。

在Java中,InputStream/OutputStream类用于读取/写入字节。要读/写字符,您需要使用Reader/Writer,这通常是通过将InputStream/OutputStreamInputStreamReader/OutputStreamWriter包装来完成的,您可以指定应该使用哪个字符集将字节转换为/从char值。

最新更新