130

PrintStreamとの違いは何PrintWriterですか?それらには多くの共通のメソッドがあるため、私はこれら2つのクラスを混同することがよくあります。また、まったく同じように使えると思います。しかし、違いがなければなりません。そうでなければ、クラスは1つしかありませんでした。

アーカイブを検索しましたが、この質問は見つかりませんでした。

4

6 に答える 6

134

これは派手に聞こえるかもしれませんが、にPrintStream印刷され、OutputStreamPrintWriter印刷されWriterます。わかりました、私は明白なことを述べるためのポイントを得るとは思えません。しかし、それだけではありません。

OutputStreamでは、との違いは何Writerですか?どちらもストリームであり、主な違いは、aOutputStreamがバイトのストリームであり、aWriterが文字のストリームであるということです。

OutputStreamバイトを扱う場合はどうPrintStream.print(String)ですか?デフォルトのプラットフォームエンコーディングを使用して、文字をバイトに変換します。デフォルトのエンコーディングを使用すると、あるプラットフォームから別のプラットフォームに移動するときにバグが発生する可能性があるため、一般的には悪いことです。特に、あるプラットフォームでファイルを生成し、別のプラットフォームでファイルを使用する場合はそうです。

を使用するWriterと、通常、使用するエンコーディングを指定して、プラットフォームの依存関係を回避します。

PrintStream主な目的はバイトではなく文字を書くことなので、なぜJDKにを含めるのが面倒なのですか?PrintStreamリーダー/ライターの文字ストリームが導入されたときのJDK1.1より前のバージョンです。SunPrintStreamが非常に広く使用されているという事実だけがあれば、Sunは廃止されたと思います。(結局のところ、各呼び出しSystem.outで非推奨のAPI警告が生成されることは望ましくありません!また、標準の出力ストリームでタイプをからに変更すると、PrintStream既存PrintWriterのアプリケーションが破損する可能性があります。)

于 2010-05-12T19:18:19.053 に答える
20

JDK 1.4以降、PrintStreamの文字エンコードを指定することができます。したがって、PrintStreamとPrintWriterの違いは、自動フラッシュの動作と、PrintStreamがWriterをラップできないことだけです。

于 2011-01-23T20:22:04.007 に答える
3

PrintWriterのようなライターはテキスト出力用であり、ストリームはバイナリ出力用です。ライターは文字セットを処理します。ストリームは、バイナリデータを台無しにするような変換を望まないことを前提としているため、そうではありません。そうすると、ライターを使用することになります。

于 2010-05-12T19:20:27.707 に答える
2

生のバイトは、ライターではなくストリームに書き込むことができます。PrintWriter javadocには、他の違いがリストされています(最も重要なのは、ストリームにエンコーディングを設定して、生のバイトを解釈できるようにすることです)。

于 2010-05-12T19:23:43.770 に答える
2

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メソッドを使用する場合、プリントライターとまったく同じように機能します。

于 2019-08-11T11:29:06.940 に答える
-3

Printwriterは、printstreamの拡張機能です。

特定の目的のためのIEプリントストリーム。

于 2016-12-09T22:22:16.440 に答える