PrintStream
との違いは何PrintWriter
ですか?それらには多くの共通のメソッドがあるため、私はこれら2つのクラスを混同することがよくあります。また、まったく同じように使えると思います。しかし、違いがなければなりません。そうでなければ、クラスは1つしかありませんでした。
アーカイブを検索しましたが、この質問は見つかりませんでした。
PrintStream
との違いは何PrintWriter
ですか?それらには多くの共通のメソッドがあるため、私はこれら2つのクラスを混同することがよくあります。また、まったく同じように使えると思います。しかし、違いがなければなりません。そうでなければ、クラスは1つしかありませんでした。
アーカイブを検索しましたが、この質問は見つかりませんでした。
これは派手に聞こえるかもしれませんが、にPrintStream
印刷され、OutputStream
にPrintWriter
印刷されWriter
ます。わかりました、私は明白なことを述べるためのポイントを得るとは思えません。しかし、それだけではありません。
OutputStream
では、との違いは何Writer
ですか?どちらもストリームであり、主な違いは、aOutputStream
がバイトのストリームであり、aWriter
が文字のストリームであるということです。
OutputStream
バイトを扱う場合はどうPrintStream.print(String)
ですか?デフォルトのプラットフォームエンコーディングを使用して、文字をバイトに変換します。デフォルトのエンコーディングを使用すると、あるプラットフォームから別のプラットフォームに移動するときにバグが発生する可能性があるため、一般的には悪いことです。特に、あるプラットフォームでファイルを生成し、別のプラットフォームでファイルを使用する場合はそうです。
を使用するWriter
と、通常、使用するエンコーディングを指定して、プラットフォームの依存関係を回避します。
PrintStream
主な目的はバイトではなく文字を書くことなので、なぜJDKにを含めるのが面倒なのですか?PrintStream
リーダー/ライターの文字ストリームが導入されたときのJDK1.1より前のバージョンです。SunPrintStream
が非常に広く使用されているという事実だけがあれば、Sunは廃止されたと思います。(結局のところ、各呼び出しSystem.out
で非推奨のAPI警告が生成されることは望ましくありません!また、標準の出力ストリームでタイプをからに変更すると、PrintStream
既存PrintWriter
のアプリケーションが破損する可能性があります。)
JDK 1.4以降、PrintStreamの文字エンコードを指定することができます。したがって、PrintStreamとPrintWriterの違いは、自動フラッシュの動作と、PrintStreamがWriterをラップできないことだけです。
PrintWriterのようなライターはテキスト出力用であり、ストリームはバイナリ出力用です。ライターは文字セットを処理します。ストリームは、バイナリデータを台無しにするような変換を望まないことを前提としているため、そうではありません。そうすると、ライターを使用することになります。
生のバイトは、ライターではなくストリームに書き込むことができます。PrintWriter javadocには、他の違いがリストされています(最も重要なのは、ストリームにエンコーディングを設定して、生のバイトを解釈できるようにすることです)。
HorstmannによるコアJavaから
Javaのベテランは、PrintStreamクラスとSystem.outに何が起こったのか疑問に思うかもしれません。Java 1.0では、PrintStreamクラスは、最上位バイトを削除することにより、すべてのUnicode文字をASCII文字に単純に切り捨てました。(当時、Unicodeはまだ16ビットエンコーディングでした。)明らかに、これはクリーンでポータブルなアプローチではなく、Java1.1でのリーダーとライターの導入によって修正されました。既存のコードとの互換性のために、System.in、System.out、およびSystem.errは引き続き入力/出力ストリームであり、リーダーとライターではありません。しかし現在、PrintStreamクラスは、PrintWriterと同じ方法で、Unicode文字をデフォルトのホストエンコーディングに内部的に変換します。PrintStream型のオブジェクトは、printメソッドとprintlnメソッドを使用する場合、プリントライターとまったく同じように機能します。
Printwriterは、printstreamの拡張機能です。
特定の目的のためのIEプリントストリーム。