と の違いを誰か説明してもらえますOutputStream
かWriter
? これらのクラスのどれを使用する必要がありますか?
5 に答える
ストリームはバイト レベルで動作し、バイトまたはバイトのリストをストリームに読み書き ( InputStream ) および書き込み ( OutputStream ) できます。
リーダー/ライターは、ストリームの上に文字の概念を追加します。文字はエンコーディングを使用してのみバイトに変換できるため、リーダーとライターにはエンコーディング コンポーネントがあります (Java にはデフォルトのエンコーディング プロパティがあるため、自動的に設定される場合があります)。読み取られた ( Reader ) または書き込まれた ( Writer ) 文字は、エンコーディングによって自動的にバイトに変換され、ストリームに送信されます。
OutputStreamクラスはバイトごとにターゲットに書き込みますが、Writerクラスはターゲットに文字ごとに書き込みます。
AnOutputStream
は、情報を書き込むことができるストリームです。これはかなり一般的であるため、OutputStream
ファイルへの書き込みなどの特別な目的に特化したものがあります。ストリームは、バイト配列のみを書き込むことができます。
Writer
s は、特別なエンコーディングを考慮しながら、文字や文字列を書き込むことができるという点で、より柔軟性を提供します。
どちらを取るかは、実際に何を書きたいかの問題です。すでにバイトがある場合は、ストリームを直接使用できます。文字または文字列がある場合、それらをストリームに書き込みたい場合はそれらを自分でバイトに変換するか、Writer
そのジョブを行う を使用する必要があります。
OutputStream
エンコードされWriter
た文字を使用するのに対し、裸のバイトを使用します。
Reader/Writer クラス階層は文字指向であり、Input Stream/Output Stream クラス階層はバイト指向です。基本的に、ストリームには2つのタイプがあります。バイトストリームを処理するために使用されるバイトストリームと、文字のストリームを処理するための文字ストリームです。バイトストリームでは、入出力ストリームは階層の最上位にある抽象クラスであり、ライター/リーダーは抽象クラスです。文字ストリーム階層の最上位のクラス。
乾杯!!!