【Java】deleteを使ってファイル/ディレクトリを削除する!
ファイル/ディレクトリを削除するにはFileクラスのdeleteメソッドを使用します。
Fileクラスのdeleteメソッドは、対象のファイル(またはディレクトリ)を削除するメソッドとなります。
また、deleteメソッドは戻り値として削除できた場合はtrue、削除できなかった場合はfalseを返すため、ファイル(またはディレクトリ)を削除できたかどうかをログに残すことができます。
今回はFileクラスのdeleteメソッドを使って以下の場合でファイル/ディレクトリを削除していきます。
⚫︎ 削除するファイル/ディレクトリが存在する場合
⚫︎ 削除するファイル/ディレクトリが存在しない場合
また、Java7から使用できるようになったFilesクラスのdeleteメソッドやdeleteIfExistsメソッドを使って、ファイル/ディレクトリを削除する方法についても紹介していきます。
目次
deleteメソッドとは
Fileクラスのdeleteメソッドとは、対象のファイル(またはディレクトリ)を削除するメソッドになります。
deleteメソッドの書き方
Fileクラスのdeleteメソッドの構文は下記となります。
1 2 3 |
import java.io.File; ファイル.delete; |
まず、deleteメソッドが使用できるようにFileクラスをインポートします。
そして、ファイルの後にdeleteを呼び出すことでdeleteの前に指定したファイルを削除します。
また、返り値として削除できた場合はtrueを返し、削除できなかった場合はfalseを返します。
ファイル/ディレクトリを削除するサンプルコード
ファイル/ディレクトリを削除するサンプルコードを紹介します。
削除するファイル/ディレクトリが存在する場合
コンソールから実行する場合は、カレントディレクトリに「deleteFile.txt」を用意します。
また、Eclipseで実行する場合は、プロジェクト直下に「deleteFile.txt」を用意します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// ファイル・ディレクトリを削除する import java.io.File; public class Main { public static void main(String[] args) throws Exception { // 削除するファイル・ディレクトリ File file1 = new File("deleteFile.txt"); //ファイル・ディレクトリを削除する if (file1.delete) { // 正常に削除した場合 System.out.println("削除成功"); } else { // 正常に削除されない場合 System.out.println("削除失敗"); } } } |
出力結果
削除成功
deleteメソッドがtrueを返しているため、deleteFile.txtが削除されています。
削除するファイル/ディレクトリが存在しない場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// ファイル・ディレクトリを削除する import java.io.File; public class Main { public static void main(String[] args) throws Exception { // 削除するファイル・ディレクトリ File file2 = new File("deleteFile.txt"); //ファイル・ディレクトリを削除する if (file2.delete) { // 正常に削除した場合 System.out.println("削除成功"); } else { // 正常に削除されない場合 System.out.println("削除失敗"); } } } |
出力結果
削除失敗
削除するファイルやディレクトリが存在しない場合はdeleteメソッドはfalseを返します。
NIO.2(Filesクラス)でファイル/ディレクトリを削除する場合
NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2のFilesクラスを使用することでとても簡単にファイル処理を行うことができます。
そのため、FilesクラスのdeleteメソッドやFilesクラスのdeleteIsExistsメソッドを呼び出すことによって、ファイル、または、ディレクトリを削除することができます。
deleteメソッドとdeleteIfExistsメソッドの違いは、削除対象のファイル、またはディレクトリが存在しなかった場合、deleteメソッドでは例外が発生しますが、deleteIfExistsメソッドでは戻り値が「false」となり、例外が発生しないということです。
つまり、deleteIfExistsメソッドを使うことで、ファイルの存在チェックが不要になります。
しかし、削除対象が空でないディレクトリの場合や、Javaを実行したユーザのアクセス権によってファイル、または、ディレクトリを削除できない場合は、Fileクラスのdeleteメソッドと同様に例外が発生します。
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// ファイル・ディレクトリを削除する import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws Exception { // Files.deleteで削除するファイル・ディレクトリ Path pathA = Paths.get("deleteFileA.txt"); // ファイル・ディレクトリを削除する Files.delete(pathA); // Files.deleteIfExistsで削除するファイル・ディレクトリ Path pathB = Paths.get("deleteFileB.txt"); //ファイル・ディレクトリを削除する if (Files.deleteIfExists(pathB)) { //正常に削除した場合 System.out.println("削除成功"); } else { //ファイル・ディレクトリが存在しない場合 System.out.println("削除失敗"); } } } |
出力結果
削除成功
コンソールから実行する場合は、カレントディレクトリに「deleteFileA.txt」と「deleteFileB.txt」を用意します。
Eclipseで実行する場合は、プロジェクト直下に「deleteFileA.txt」と「deleteFileB.txt」を用意します。
その状態でサンプルコードであるMain.javaを実行すると「deleteFileA.txt」と「deleteFileB.txt」が削除されます。
また、コンソールに、削除成功が表示されます。
今回のポイント
deleteでファイル/ディレクトリを削除
ファイル/ディレクトリを削除するにはFileクラスのdeleteメソッドを使用する。
⚫︎ Fileクラスのdeleteメソッドで、ファイル、または、ディレクトリを削除することができる
⚫︎ deleteメソッドhs正常に削除された場合には「true」を返し、正常に削除されなかった場合には「false」を返す
⚫︎ ディレクトリを削除する場合、そのディレクトリ内が空である必要があります。
⚫︎ Javaを実行したユーザのアクセス権によってファイル、または、ディレクトリを削除できない場合は、例外が発生する
deleteやdeleteIfExistsでファイル/ディレクトリを削除
Filesクラスでファイル/ディレクトリを削除するにはのdeleteメソッドやdeleteIfExistsメソッドを使用する。
⚫︎ FilesクラスのdeleteメソッドやdeleteIfExistsメソッドで、ファイル、または、ディレクトリを削除することができる
⚫︎ deleteメソッドとdeleteIfExistsメソッドの違いは、削除対象のファイル、またはディレクトリが存在しなかった場合の動きである
(deleteメソッドでは例外が発生するが、deleteIfExistsメソッドではfalseを返す)
⚫︎ Javaを実行したユーザのアクセス権によってファイルやディレクトリを削除できない場合は、どちらも例外が発生する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。