バイナリ ストリームからデータを読み取ろうとしていますが、その一部は UTF-8 として解析する必要があります。
InputStream
バイナリ データに を直接使用し、UTF-8 テキストに をその上に使用すると、最大文字数InputStreamReader
を読み取るように指示されていても、リーダーが先読みして後続のバイナリ データを台無しにするため、機能しません。n
この質問はRead from InputStream in multiple formatsと非常によく似ていることを認識していますが、そこで提案されている解決策は HTTP ストリームに固有のものであり、役に立ちません。
すべてをバイナリデータとして読み取り、関連する部分を後でテキストに変換することを考えました。しかし、文字データの長さ情報はバイト単位ではなく、文字単位しかありません。したがって、エンコーディングを認識するために、ストリームから文字を読み取るものが必要です。
指定された文字数を読み取るために必要な以上に先読みしないように InputStreamReader に指示する方法はありますか? または、エンコーディングを使用してバイナリデータとテキストの両方をサポートし、これらのモードをオンザフライで切り替えることができるリーダーはありますか?