Java文字ストリームがバイトストリームをラップし、基になるバイトストリームがシステムのデフォルトまたは特別に定義された文字セットに従って解釈されることを理解しています。
私のシステムのデフォルトの文字セットはUTF-8です。
を使用FileReader
してテキストファイルを読み取ると、基になる。からのバイトを解釈するためにデフォルトの文字セットが使用されるため、すべてが正常に見えますInputStreamReader
。InputStreamReader
UTF-8でエンコードされたテキストファイルをUTF-16として読み込むように明示的に定義すると、すべてが明らかに奇妙に見えます。のようなバイトストリームを使用し、FileInputStream
その出力をSystem.outにリダイレクトすると、すべてが正常に見えます。
だから、私の質問は;
文字ストリームを使用すると便利なのはなぜですか?
バイトストリームを直接使用するのではなく、文字ストリームを使用するのはなぜですか?
特定の文字セットを定義すると便利なのはいつですか。