Javaでファイルやフォルダを削除する方法について記載します。
目次
ファイルやフォルダを削除する方法
ファイル・フォルダを削除するには、いくつかのメソッドがあり、削除失敗時に詳細情報が取得できるものと、できないものがあります。
メソッド一覧
No | クラス | メソッド | 戻り値 | 特徴 |
---|---|---|---|---|
1 | File | delete | boolean | 戻り値 true:削除成功 false:削除失敗 削除に失敗した場合、詳細情報は取得できません。 |
2 | Files | delete | void | 削除失敗時に例外が返ります。 例外から削除に失敗した詳細情報を取得できます。 例えば、次の例外が返ります。 java.nio.file.DirectoryNotEmptyException |
3 | Files | deleteIfExists | boolean | 削除対象が存在する場合のみ、削除します。
戻り値 また、削除対象が存在しない以外で削除できない場合は、Files.deleteと同様に例外が返ります。 |
個人的には、削除に失敗した理由が分かる、Filesクラスの delete や deleteIfExists メソッドの使用をオススメします。
1.Fileクラスのdeleteメソッドを使用した場合
ファイル( /Users/dir/a.txt )の削除を行います。
実行例( ファイルを削除 )
1 2 3 4 5 6 7 8 9 10 |
// 削除対象のファイルパスを指定して、Fileインスタンスを生成 File f = new File("/Users/dir/a.txt"); // ファイルを削除 boolean b = f.delete(); if( b == true ) { System.out.println("削除成功"); }else { System.out.println("削除失敗"); } |
次にフォルダ( /Users/dir )の削除を行います。
フォルダを削除する場合、フォルダが空の必要があります。
フォルダ内にファイル・サブフォルダがあると削除に失敗します。
実行例( フォルダを削除 )
1 2 3 4 5 6 7 8 9 10 |
// 削除対象のフォルダパスを指定して、Fileインスタンスを生成 File f = new File("/Users/dir"); // フォルダを削除 boolean b = f.delete(); if( b == true ) { System.out.println("削除成功"); }else { System.out.println("削除失敗"); } |
2.Filesクラスのdeleteメソッドを使用した場合
Filesクラスのdeleteメソッドでは、削除失敗時に例外が返ります。
なので削除失敗時の処理は、例外をキャッチして行います。
次の例では、ファイル( /Users/dir/a.txt )の削除を行います。
実行例( ファイルを削除 )
1 2 3 4 5 6 7 8 9 |
try { // 削除対象のファイルパスを指定してPathインスタンスを生成 Path p = Paths.get("/Users/dir/a.txt"); Files.delete(p); } catch (IOException e) { // 例外をキャッチしてエラー処理を行います e.printStackTrace(); } |
次にフォルダの削除を行います。
Fileのdeleteメソッドと同じく、フォルダが空じゃない場合は、削除に失敗します。
Fileのdeleteメソッドの場合は、false が返りますが、Filesのdeleteメソッドの場合は、例外が返ります。
実行例( フォルダを削除 )
1 2 3 4 5 6 7 8 9 |
try { // 削除対象のフォルダパスを指定してPathインスタンスを生成 Path p = Paths.get("/Users/dir"); Files.delete(p); } catch (IOException e) { // 例外をキャッチしてエラー処理を行います e.printStackTrace(); } |
3.FilesクラスのdeleteIfExistsメソッドを使用した場合
FilesクラスのdeleteIfExistsメソッドでは、削除対象が存在する場合のみ削除を行います。
次の例では、ファイル( /Users/dir/a.txt )が存在する場合のみ削除を行います。
実行例( ファイルを削除 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
try { // 削除対象のファイルパスを指定してPathインスタンスを生成 Path p = Paths.get("/Users/dir/a.txt"); // ファイルが存在する場合のみ削除 boolean b = Files.deleteIfExists(p); if( b == true ) { System.out.println("削除成功"); }else { System.out.println("削除失敗"); } } catch (IOException e) { e.printStackTrace(); } |
次にフォルダの削除を行います。
Fileのdeleteメソッドと同じく、フォルダが空じゃない場合は、削除に失敗します。
Fileのdeleteメソッドの場合は、false が返りますが、Filesのdeleteメソッドの場合は、例外が返ります。
実行例( フォルダを削除 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
try { // 削除対象のフォルダパスを指定してPathインスタンスを生成 Path p = Paths.get("/Users/dir/a"); // フォルダが存在する場合のみ削除 boolean b = Files.deleteIfExists(p); if( b == true ) { System.out.println("削除成功"); }else { System.out.println("削除失敗"); } } catch (IOException e) { // 例外をキャッチしてエラー処理を行います e.printStackTrace(); } |