Javaプログラムでは、ファイルやディレクトリを作成したり、不要となったものを削除したいといったケースはよくあります。
本記事では、Javaでファイルやディレクトリを削除する方法について、サンプルコードを掲載しながらご紹介していきます。
目次
Javaでファイルを削除する方法
Javaでファイルを削除するには「Files」クラスから提供されている「delete」メソッドを利用します。
基本的な使い方
deleteメソッドを利用する場合、引数には「Path」クラスに設定したパスを指定することで、ファイルを削除することが出来ます。
記述法は下記のような形となります。
Paths path = Paths.get("ファイルのパス"); Files.delete(path);
実装サンプル
今回のサンプルでは、「target」フォルダに格納した「sample.txt」をJavaプログラムから削除してみたいと思います。
フォルダ構成
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target └── sample.txt
実装
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 path = Paths.get("./target/sample.txt"); Files.delete(path); System.out.println("ファイル削除に成功しました。"); } catch(IOException ex) { ex.printStackTrace(); } } }
プログラムを実行すると、「ファイル削除に成功しました。」とコンソール結果に出力され、「sample.txt」ファイルが削除されています。
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target
ファイル削除時の注意点
deleteメソッドでファイルを削除する際、対象のパスにファイルが存在しないと下記のエラーが発生してしまいます。
再度上記プログラムを実行してみましょう。
java.nio.file.NoSuchFileException: ./target/sample.txt
ファイルが存在しない場合のチェックに関しては、次に紹介する「deleteIfExists」メソッドを利用しましょう。
JavaのdeleteIfExistsメソッドでファイルを削除する
deleteメソッドを利用した場合、ファイルが存在しないとエラーが発生しますが、「deleteIfExists」メソッドでは存在した場合「true」を返却して削除、存在しなかった場合は「false」を返却します。
基本的な使い方
記述法はdeleteメソッドと同じで、Pathクラスを引数に設定して、削除するファイルパスを指定します。
Path path = Paths.get("ファイルパス"); if(Files.deleteIfExists(path)) { // ファイル存在時の処理 } else { // ファイルが存在しなかったときの処理 }
実装サンプル
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 path = Paths.get("./target/sample.txt"); if(Files.deleteIfExists(path)) { System.out.println("ファイル削除に成功しました。"); }else { System.out.println("ファイルが存在しませんでした。"); }; } catch(IOException ex) { ex.printStackTrace(); } } }
ファイルが存在する場合
まずは上記プログラムを「sample.txt」が指定されたパスに存在する状態で実行してみましょう。
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target └── sample.txt
実行した結果は下記です。
ファイル削除に成功しました。
ファイルが存在しない場合
再度フォルダ構成を確認してみましょう。
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target
同じプログラムを実行すると、今度は結果が下記のように変わります。
ファイルが存在しませんでした。
Javaでディレクトリを削除する方法
Javaでディレクトリを削除する場合、ファイルを削除する場合と同じで「delete」または「deleteIfExists」が利用出来ます。
deleteメソッド
deleteメソッドで、ディレクトリを削除する方法は、引数に設定するパスをディレクトリで指定するだけです。
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 path = Paths.get("./target"); Files.delete(path); System.out.println("ディレクトリ削除が完了しました。"); } catch(IOException ex) { ex.printStackTrace(); } } }
実行すると「ディレクトリ削除が完了しました。」とコンソールに表示され、ディレクトリが削除されます。
deleteIfExistsメソッド
deleteIfExistsメソッドの場合、ディレクトリ内にファイルが存在する場合でも削除することが可能です。
$ tree . ├── bin │ └── Main.class ├── src │ └── Main.java └── target └── sample.txt
この状態で下記プログラムを実行してみます。
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 path = Paths.get("./target"); if(Files.deleteIfExists(path)) { System.out.println("ディレクトリ削除に成功しました。"); }else { System.out.println("ディレクトリが存在しませんでした。"); }; } catch(IOException ex) { ex.printStackTrace(); } } }
実行結果は「ディレクトリ削除に成功しました。」とコンソールに出力され、ディレクトリごとファイルも削除されます。
さいごに: Javaのdeleteメソッドを使ってファイル削除処理を試してみよう
本記事では、Javaでのファイル削除方法について、サンプルコードを掲載しながらご紹介してきました。
deleteメソッドを利用するかdeleteIfExistsメソッドを利用するかは、対象ファイルやディレクトリが存在しない場合などにどのような処理結果としたいかで使い分けましょう。
ディレクトリ内が空でない場合、「java.nio.file.DirectoryNotEmptyException」エラーが発生するため注意が必要です。