Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java文件输入流一次读取8位或16位_Java_Io - Fatal编程技术网

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

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值 文件是字节序列,因此要在文件中存储字符串,必须对字符串进行编码。编码称为字符集,它取决于您使用的字

我从年开始学习java的基本IO

ByTestStream一次读取一个字节(8位)。但字符存储在16位unicode字符中


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

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

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

现在,文件通常用UTF-8编码,因此Unicode字符需要1到4个字节

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

您不能从
InputStream
读取字符。只能读取字节或字节数组。继续该教程中的“字符流”部分,您将更好地理解它。