Sun Docが言うように、バイトストリームを使用するべきではありません-
実際には、避けるべき低レベルのI/Oの一種を表しています。
実際の低レベルI/Oとは何か、バイトストリームを使用した場合の正確な問題は何ですか。
したがって、Javaドキュメントは次のように述べています。
CopyBytesは通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。xanadu.txtには文字データが含まれているため、次のセクションで説明するように、文字ストリームを使用するのが最善の方法です。より複雑なデータ型のストリームもあります。バイトストリームは、最も基本的なI/Oにのみ使用する必要があります。
バイトストリームを使用すると、ファイルにそのままアクセスできます。ちょうどバイト。いかなる種類の解釈もありません。つまり、文字セットの変換、バイナリまたはASCII表現でのintまたはfloatの処理、バイトオーダーの処理などはありません。より高いレベルのストリームは、これらのいくつかを提供します。
もちろん、ファイルをコピーするプログラムは、実際には生のバイトストリームを必要とするもののかなり良い例です。これは、データの解釈を一切必要としない、または実行したくないためです。それを逐語的にコピーしたいだけです。
つまり、本当に意味するのは、バイトストリームが必要だと思われる場合はそれを使用することですが、自分が何をしているのかを知っていることを確認してください:)
提案は、チュートリアルで説明されているテキストファイルを読むという文脈にあります。そのためには、文字ストリームを使用して文字セットの変換を適切に処理することをお勧めします。
Javaプラットフォームは、Unicode規則を使用して文字値を格納します。文字ストリームI/Oは、この内部形式をローカル文字セットとの間で自動的に変換します。
バイトストリームの代わりに文字ストリームを使用するプログラムは、ローカルの文字セットに自動的に適応し、国際化の準備ができています。すべて、プログラマーによる余分な労力は必要ありません。