• ベストアンサー

PrintWriterとBufferedWriterの違い

タイトル通りなのですが、 ファイル出力を行う際にBufferedWriterをラップしてPrintWriterのインスタンスを生成し使うと思うのですが、 二つのクラスの違いはどこの辺にあるのでしょうか? BufferedWriterよりも優れていることがあってPrintWriterを使ってるのだと思うのですが、、、 詳しい方ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.1

>BufferedWriterよりも優れていることがあってPrintWriterを使ってるのだと思うのですが、、、 いや、「優れている」ということじゃなくて、要するに「用途が違う」から組み合わせているだけだ。 ストリーム関係は、特定の機能に特化した複数のストリームを組み合わせて自分の望むものを用意するのが基本。BufferedWriterは、データをバッファリングするストリームで、バッファリングすることで効率よく出力できるようにしたもの。PrintWriterは文字通りprint出力するもの。したがって、バッファリングするBufferedWriterをラップしてPrintWriterを作ることで、「バッファリング機能を持ったPrintWriter」を作ることができる、というわけ。 なんでこんな具合にわけたかというと、例えば「バッファリング機能を持ったストリーム」なんてのは、ファイルに出力するのだって使うだろうし、メモリに出力したりプリンタに出力したり、いろんな「出力」に使うはずだから、全部に「普通のストリームと、バッファ内臓のストリーム」を個々に用意するのは無駄だ。バッファ機能だけに特化したクラスを用意し、それを使いたい出力系のストリームと組み合わせて使えるようにしたほうが合理的だろう、ということ。

関連するQ&A

専門家に質問してみよう