目次へ

3. その他の入出力クラス

3.1. java.io.PrintWriter

「PrintWriter」は様々なデータをテキスト出力ストリームに出力するクラスです。「PrintWriter」は他のクラスと以下の点で異なっています。

  • 基本データ型のデータを出力するメソッドを持つ。
  • 自動フラッシュの機能を持つ。フラッシュを行うのは「println」メソッドを呼び出したときで、自動フラッシュを行わないようにする事も可能です。
  • 「write」メソッドを除いて「IOException」例外を発生しない。出力にエラーがあったかどうかは「checkError」メソッドで調べる事ができます。
FileOutputStream out=new FileOutputStream("output.txt");
PrintWriter writer=new PrintWriter(out);
writer.println(1);
writer.println('a');
writer.println("test");
writer.flush();
writer.close();

「PrintWriter」のコンストラクタは全部で4種類あります。引数に「OutputStream」「Writer」のどちらのタイプのものを取る事も可能です。またデフォルトでは自動フラッシュは行われないので、行う場合には引数を2つ取るコンストラクタを使用します。

出力メソッドは「print」と「println」で、色々なデータ型のデータを引数にとってそれを出力する機能を提供します。「print」と「println」の違いは、最後に行区切り文字を出力するかしないかの違いです。文字列を出力するメソッドも提供しますが、プラットフォームのデフォルトの文字コードに従いエンコードを行います。

(実習課題1)

以下のプログラムを作成しなさい。

  • プログラムの実行時に指定する引数は2つ。1つは出力ファイル名。もう1つは自然数。
  • ファイルに、1から指定された数までの自然数を1行ずつ書き込む事。

解答例はこちら

3.2. java.io.PrintStream

「PrintStream」は「PrintWriter」とほとんど同じ機能を提供するクラスです。違う点は2点で、1つはコンストラクタの引数の取るのは「OutputStream」だけである点。もう1つは自動フラッシュを「println」メソッドが呼び出されたときだけではなく、改行文字を指定した場合にも行う点です。したがって「PrintStream」クラスを明示的に使用する場面はほとんどありません。大抵の場合、「PrintWriter」クラスを使用します。

PrintStream out=new PrintStream(new FileOutputStream("output.txt"),true);
out.println(1);
out.println('a');
out.println("test");

「PrintStream」を明示的に使用することはほとんどありませんが、コンソールなどの標準出力へ出力する際に使用します。「java.lang.System」クラスのクラス変数「out」が、「PrintStream」のインスタンスだからです。これまで

System.out.println("test");

とコンソールへ出力する際には記述してきましたが、「println」は「PrintStream」クラスのメソッドを呼び出していたわけです。

「System」クラスには「err」という標準エラー出力へ出力するためのクラス変数があります。これも「PrintStream」クラスのインスタンスですので、「System.out」と同じように扱う事ができます。

(実習課題2)

以下のプログラムを作成しなさい。

  • 様々な型のデータを標準出力に出力する事。
  • 標準エラー出力にも出力する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp