Java文件输入流一次读取8位或16位
我从年开始学习java的基本IO ByTestStream一次读取一个字节(8位)。但字符存储在16位unicode字符中Java文件输入流一次读取8位或16位,java,io,Java,Io,我从年开始学习java的基本IO ByTestStream一次读取一个字节(8位)。但字符存储在16位unicode字符中 我的问题或困惑是,如果字符存储在16位中,那么FileInputStream的读取方法(一次读取8位)如何读取16位(字符存储在内部)?在Java中,字符串存储为char值的数组,而char是16位UTF-16编码值。一些Unicode字符(例如表情符号)编码为2char值 文件是字节序列,因此要在文件中存储字符串,必须对字符串进行编码。编码称为字符集,它取决于您使用的字
我的问题或困惑是,如果字符存储在16位中,那么FileInputStream的读取方法(一次读取8位)如何读取16位(字符存储在内部)?在Java中,字符串存储为
char
值的数组,而char
是16位UTF-16
编码值。一些Unicode字符(例如表情符号)编码为2char
值
文件是字节序列,因此要在文件中存储字符串,必须对字符串进行编码。编码称为字符集,它取决于您使用的字符集,一个字符占用1字节、2字节还是更多
现在,文件通常用UTF-8编码,因此Unicode字符需要1到4个字节
在Java中,InputStream
/OutputStream
类用于读取/写入字节。要读取/写入字符,您需要使用读卡器
/写卡器
,这通常是通过将输入流
/输出流
与输入流读卡器
/输出流写卡器
包装来完成的,您可以指定应使用哪个字符集将字节转换为char
值或从char
值转换字节。您不能从InputStream
读取字符。只能读取字节或字节数组。继续该教程中的“字符流”部分,您将更好地理解它。