バッファードライターJ2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.BufferedWriter。Writerクラスのサブクラスであり、文字出力ストリームクラスである。文字出力ストリームクラスの中では「中継ぎ」に位置する。対になる入力側のクラスはBufferedReaderクラスである。文字列を「まとめて」出力するための文字出力ストリームクラス。通常、write()メソッドを呼び出す度に対象のストリームへと出力されるが、出力先がファイルやネットワークの場合、ある程度の文字数をまとめて出力した方が処理が早まる可能性がある。そこで、write()メソッドを呼んでもすぐには出力せず、渡された文字列を「バッファ」に保存しておき、貯まった際や任意のタイミングでまとめて出力するのがこのクラスの役目である。BufferedWriterクラスは「OSの改行文字」を出力する機能を持つ。文字出力ストリームクラスは、"\r"や"\n"といった改行文字をそのまま出力する。システム内の改行文字、特にファイルの改行文字はOS毎に異なるため、出力した改行文字が適切ではない場合がある。BufferedWriterクラスのnewLine()メソッドは、OSの標準改行文字を出力するため、適切な改行を行うことができる。同様の機能がPrintWriterクラスのprintln()メソッドにもある。PrintWriterクラスのprintln()メソッドにはプリミティブ型を出力する機能もあり、「出力用」クラスとして非常に便利である。そのため、改行文字を出力するためだけにBufferedWriterクラスを使用する必要はない。バッファリングを行うために使用するのがいいだろう。BufferedWriterクラスのコンストラクタに他のWriterクラスのサブクラスを渡すことで、そのクラスを「出力先」として出力する。BufferedWriterクラスのwrite()メソッドで出力を行う。出力先にはすぐさま出力せず、渡された文字や文字列を「バッファ」というBufferedWriterクラス内のフィールドに格納しておく。flush()メソッドが呼ばれた時や、バッファがいっぱいになった時、close()メソッドが呼ばれた時にまとめてバッファの中身を出力先に出力する。flush()メソッドの呼び出しを「フラッシュ」と言い、まとめて出力することを指す。このフラッシュを行えることが、BufferedWriterクラスのメリットである。改行を行う場合には、"\r"や"\n"は文字列に渡さず、newLine()メソッドを使用して改行文字を出力する。処理終了後はclose()メソッドを呼び終了処理を行う。StringWriterクラスを作ります。このクラスを対象とするBufferedWriterクラスを作ります。