テキストをファイルに書き込む

広告

ここからはテキストをファイルに書き込んでいく方法を見てみましょう。まずは基本となる"FileWriter"クラスを使います。

手順はファイルから読み込むときと似ています。テキストを書き込みたいファイルを対象にしてFileクラスのオブジェクトを作成します。そしてそのオブジェクトを引数としてFileWriterクラスのオブジェクトを作成します。

File file = new File(file_name);
FileWriter filewriter = new FileWriter(file);

これで対象のファイルに対する書き込みを行う準備が出来ました。

ちなみにFileWriterクラスのオブジェクトを作成する場合には、"IOException"という例外が発生する可能性があるため、例外の処理をしておいてください。

try{
  File file = new File("c:\\tmp\\test.txt");
  FileWriter filewriter = new FileWriter(file);
}catch(IOException e){
  System.out.println(e);
}

ファイルへの書き込み

ではファイルに書き込みを行います。"write"メソッドを使います。"write"メソッドは書き込む値として文字コードを使ったり、文字列を指定したりといくつか用意されているのですが、ここでは文字列を書き込むメソッドを見てみます。

public void write(String str) throws IOException

文字列を書き込みます。

パラメータ:
  str - 書き込まれる文字列
例外: 
  IOException - 入出力エラーが発生した場合

引数に指定した文字列を書き込みます。例えば下記のような使い方になります。

try{
  File file = new File("c:\\tmp\\test.txt");
  FileWriter filewriter = new FileWriter(file);

  filewriter.write("こんにちは");
}catch(IOException e){
  System.out.println(e);
}

ファイルを閉じる

ファイルに対する全ての処理が終わったら、ファイルを閉じます。"close"メソッドを使います。

public void close() throws IOException

ストリームを閉じます。

例外:
  IOException - 入出力エラーが発生した場合

以上のことからファイルに書き込みの一連の流れは次のようになります。

try{
  File file = new File("c:\\tmp\\test.txt");
  FileWriter filewriter = new FileWriter(file);

  filewriter.write("こんにちは");

  filewriter.close();
}catch(IOException e){
  System.out.println(e);
}

サンプルプログラム

では試してみましょう。下記では書き込みを行う前に、ファイルが存在し、ディレクトリではない事を確認し、そして書き込み許可されているかどうかを事前に確認しています。

streamTest4.java

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

class streamTest4{
  public static void main(String args[]){
    try{
      File file = new File("c:\\tmp\\test.txt");

      if (checkBeforeWritefile(file)){
        FileWriter filewriter = new FileWriter(file);

        filewriter.write("こんにちは\r\n");
        filewriter.write("お元気ですか\r\n");

        filewriter.close();
      }else{
        System.out.println("ファイルに書き込めません");
      }
    }catch(IOException e){
      System.out.println(e);
    }
  }

  private static boolean checkBeforeWritefile(File file){
    if (file.exists()){
      if (file.isFile() && file.canWrite()){
        return true;
      }
    }

    return false;
  }
}

上記をコンパイルして実際に実行してみると下記のようになります。

p4

画面上には特に何も表示されませんが、対象となっているファイルを開いてみると下記のようにテキストが書き込まれています。

p5

またFileWriterクラスを使う場合に、改行を書き込みたい場合は改行を表すコードを書き込みます。これはOSによって異なるため注意して下さい。Windowsの場合であれば「\r\n」を書き込みます(先ほどのサンプルでも改行を書き込んでいます)。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。