我试图从二进制流中读取数据,其中部分应该被解析为UTF-8。
直接使用
我知道这个问题与在多个格式中从InputStream中读取非常相似,但那里提出的解决方案是针对HTTP流的,对我没有帮助。
我想到了将所有内容都读取为二进制数据,然后将相关部分转换为文本。但是,我只有以字符形式表示的字符数据的长度信息,而没有以字节表示的长度信息。因此,我需要从流中读取字符的东西要知道编码方式。
是否有一种方法可以告诉InputStreamReader不要向前读取超过读取给定数量的字符所需的内容?或者是否有一种读取器,支持二进制数据和文本编码,并可以在运行时在这些模式之间切换?
直接使用
InputStream
来处理二进制数据,并在其上使用InputStreamReader
来处理UTF-8文本是不起作用的,因为即使告诉读取器最多只读取n
个字符,它也会向前读取并破坏随后的二进制数据。我知道这个问题与在多个格式中从InputStream中读取非常相似,但那里提出的解决方案是针对HTTP流的,对我没有帮助。
我想到了将所有内容都读取为二进制数据,然后将相关部分转换为文本。但是,我只有以字符形式表示的字符数据的长度信息,而没有以字节表示的长度信息。因此,我需要从流中读取字符的东西要知道编码方式。
是否有一种方法可以告诉InputStreamReader不要向前读取超过读取给定数量的字符所需的内容?或者是否有一种读取器,支持二进制数据和文本编码,并可以在运行时在这些模式之间切换?