Javaのアプリ開発を行っていると、様々なデータを外部ファイルに書き出して保存しておきたいことはよくあります。
本記事では、Javaプログラムからファイルを作成する方法について、サンプルコードを掲載しながらご紹介していきます。
目次
JavaのFilesクラスでファイルを作成
Javaではファイル操作を行うためのクラスとして「Files」クラスが提供されています。
ファイル作成には、Filesクラスより提供されている「createFile」メソッドを使用します。
基本的な使い方
createFileメソッドでは、引数として設定したPathオブジェクトのパスにファイルを新規で作成します。
Path path = Paths.get("作成するファイルパス"); Files.createFile(path);
サンプル
サンプルでは「Main.java」のコードを実行して、「target」フォルダに「sample.txt」ファイルを作成してみたいと思います。
フォルダ構成
サンプルのフォルダ構成は、プロジェクトのルートフォルダから下記のように構成されています。
$ tree . ├── bin ├── src │ └── Main.java └── target
実装
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { try { Path file = Paths.get("./target/sample.txt"); Files.createFile(file); System.out.println("ファイルを作成しました。"); } catch (IOException ex) { ex.printStackTrace(); } } }
このコードを実行すると、コンソールに「ファイルを作成しました。」と表示され「target」フォルダにファイルが作成されます。
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target └── sample.txt
Java Filesクラスでファイル作成時の注意点と回避策
JavaのFilesクラスを利用してファイルを作成する際、作成するパスに既に指定名のファイルが存在しないことが条件となります。
指定名ファイルが存在する場合
上記のサンプルを一度実行し、sample.txtを作成した状態でもう一度実行してみてください。
すると下記のエラーが発生します。
java.nio.file.FileAlreadyExistsException: ./target/sample.txt
これは作成しようとしたファイルパスに同名ファイルが既に存在することによるもので、エラーを発生させないためには存在チェックを事前に行う必要があります。
ファイル作成前に存在チェックを実施
ファイルの存在チェックには、同じくFilesクラスより提供されている「exists」メソッドを利用することが出来ます。
サンプル
上記で記載したサンプルを、既存ファイルが存在する場合にはスキップする処理に変えてみます。
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { try { Path file = Paths.get("./target/sample.txt"); if(Files.exists(file)) { System.out.println("既存ファイルが存在するので処理をスキップしました。"); } else { Files.createFile(file); System.out.println("ファイルを作成しました。"); } } catch (IOException ex) { ex.printStackTrace(); } } }
sample.txtが存在する状態で、プログラムを実行すると結果は下記のように表示されます。
既存ファイルが存在するので処理をスキップしました。
Javaプログラムから作成したファイルに書き込みを行う
ここまでで、Javaプログラムからファイルを作成出来たので、今度は作成したファイルに対して書き込み処理を行っていきましょう。
FileWriterとPrintWriter
ファイルに文字を書き込む際、「FileWriter」クラスと「PrintWriter」クラスを用いて、「println」メソッドを利用する方法が一般的です。
FileWriter fw = new FileWriter("ファイルパス"); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); pw.println("書き込みたい文字列")
サンプル
上記で作成した「sample.txt」に書き込むサンプルを実装してみたいと思います。
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Main { public static void main(String[] args) { try { FileWriter fw = new FileWriter("./target/sample.txt"); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); pw.println("あいうえお"); pw.println("かきくけこ"); pw.println("さしすせそ"); System.out.println("ファイルへの書き込みが完了しました。"); pw.close(); } catch(IOException ex) { ex.printStackTrace(); } } }
実行すると、コンソールに完了メッセージが出力されます。
メッセージを確認して、sample.txtファイルを開くと13~15行目で指定した文字列が書き込まれていることを確認出来ます。
さいごに: Javaプログラムからのファイル作成方法を把握しよう
本記事では、Javaプログラムから新規でファイルを作成する方法について、ご紹介してきました。
Javaでファイルを作成する際、既存のファイルが既に配置されていないかを確認した上で、処理を実行させることが大切です。
ファイル作成自体は、メソッドを利用することで簡単に実現出来ますので、大まかな処理の流れを把握して使いこなせるよう学習していきましょう。
「exists」メソッドはファイルが存在する場合にtrueを返却しますが、「notExists」メソッドを使えば存在しない場合にtrueを返却させることも可能です。