テキストファイルの入出力を簡単にしよう(2)

今回は、テキストファイルの出力を簡単にするTextWriterです。

TextWriterは、print、println、printf の3つのメソッドで、データをファイルに書き込みできます。基本的にSystem.out.printlnと同じ機能で、出力先がテキストファイルという違いだけですから、基本データ型はもちろん、参照型でもtoStringメソッドが定義してあれば、文字列表現を出力できます。また、出力文字コードの指定もできます。

ソースコードはこちらからダウンロードできます。
TextReader.java, TextWriter.java+APIドキュメント

TextWriterの使い方

try-catchなしで、インスタンスを生成して使います。

  TextWriter out = new TextWriter("myFile.txt");
  out.print("やっほう!");                    // 改行なし出力
  out.println("こんにちは");                  // 出力して改行
  out.printf("答え=%8.3f", 123.456789);     // 書式付き出力
  out.close();                              // 必須

使い方は、System.out.~ とまったく同じですから、簡単ですね。

ただ、最後のclose() メソッドを忘れないようにしてください。TextWriterは、close()するまでは、実際にファイルに出力しません。close() はバッファをファイルに出力して、バッファを開放します。

なお、バッファを強制的にファイルに書き込むメソッドとしてflash() も使えます。

コンストラクタ

コンストラクタは、次の5つですが、ファイル名を文字列で指定するものとNIOのPathで指定するものと、2通りあるので、合計で10個です。例はファイ名を文字列で指定する方を示します。

ファイル名を指定する

TextWriter out = new TextWriter("c:/data/myfile.txt");

ファイル名とモード(新規/追記)を指定する
モードは ‘a’ が追記モードです。それ以外は新規にファイルを作成しますが、もしも、ファイルが存在する場合は上書になります。

TextWriter out = new TextWriter("c:/data/myfile.txt", 'a');

ファイル名と文字コードを指定する (デフォルトの文字コードはUTF-8です)

TextWriter out = new TextWriter("c:/data/myfile.txt", "Shift_JIS");

ファイル名とモード、文字コードを指定する
モードと文字コードはどちらを先に書いても大丈夫なように2通りの指定ができます。どちらを先に指定するのか迷わなくて済みます。

TextWriter out=new TextWriter("c:/data/myfile.txt", 'a', "Shift_JIS");
TextWriter out=new TextWriter("c:/data/myfile.txt", "Shift_JIS", 'a' );

以上の5つのコンストラクタは、NIOのPathでファイルを指定することもできます。1つだけ例をあげておきます。

Path path = Paths.get("c:/data/myfile.txt");
TextWriter out = new TextWriter(path, 'a', "Shift_JIS");

デフォルトの文字コード

デフォルトの文字コードはUTF-8になっているので注意してください。

デフォルトの文字コードを変更してしましたい場合は次のようにしてください。

TextWriter.setDefaultCharset("Shift_JIS"); // 設定

デフォルトの文字コードを確認したい時は、次のように文字列で取得できます。

String chaset = TextWriter.getDefaultCharset(); // 文字列で取得

API

APIは次の通りです。
TextWriterAPI

読者になる

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。