【Java】ディレクトリがなければ作成しファイルを出力する方法
ディレクトリが無ければ作成しファイルを出力するには以下のとおり実装することができます。
- 出力したいディレクトリをexists()メソッドにて存在を確認
- 存在しない場合、mkdirs()メソッドでディレクトリを作成
- 作成したディレクトリにファイルを出力
File 出力先パス1 = new File("Z:/WKJava/ファイル作成"); System.out.println(出力先パス1.exists()); // 存在する場合のみ、複数のディレクトリ階層のパターンも考慮しmkdirs()にて作成 if (!出力先パス1.exists()) { 出力先パス1.mkdirs(); } System.out.println(出力先パス1.exists()); String 出力ファイル名 = "Z:/WKJava/ファイル作成/" + "test.txt"; File 出力ファイル = new File(出力ファイル名); 出力ファイル.createNewFile(); System.out.println(出力ファイル.exists()); //実行結果 false true true
上記の①~③の実装について以下に詳しく記載しました。
Javaでファイルを作成する際にディレクトリが存在しない場合、以下のエラーとなります。
File 出力先パス = new File("Z:/Java/ファイル作成"); System.out.println(出力先パス.exists()); String WK出力ファイル = "Z:/Java/ファイル作成/" + "test.txt"; File 出力ファイル = new File(WK出力ファイル); 出力ファイル.createNewFile(); // 実行結果 false Exception in thread "main" java.io.IOException: 指定されたパスが見つかりません。
上記のエラーとなるため、ディレクトリが存在しない場合は、ファイルを作成してあげる必要があります。
ディレクトリを作成するには以下のメソッドを使用します。
mkdir():ディレクトリを新規作成
mkdir()を使用するとディレクトリを新規作成することができます。
※上記のメソッドは複数のディレクトリを作成できません。
File 出力先パス1 = new File("Z:"); File 出力先パス2 = new File("Z:/WKJava"); File 出力先パス3 = new File("Z:/WKJava/ファイル作成"); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); 出力先パス3.mkdir(); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); //実行結果 true false false true false false
1つのファイルのみであれば作成可能です。
File 出力先パス1 = new File("Z:"); File 出力先パス2 = new File("Z:/WKJava"); File 出力先パス3 = new File("Z:/WKJava/ファイル作成"); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); 出力先パス2.mkdir(); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); //実行結果 true false false true true false
ディレクトリをまとめて作成するにはmkdirs()を使用する必要があります。
mkdirs():ディレクトリを再帰的に新規作成
mkdirs()を使用することで複数のファイルを一括して作成することができます。
File 出力先パス1 = new File("Z:"); File 出力先パス2 = new File("Z:/WKJava"); File 出力先パス3 = new File("Z:/WKJava/ファイル作成"); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); 出力先パス3.mkdirs(); System.out.println(出力先パス1.exists()); System.out.println(出力先パス2.exists()); System.out.println(出力先パス3.exists()); //実行結果 true false false true true true
コメントを残す