Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでファイルとディレクトリを削除する方法を徹底解説

Javaでファイルを削除するには、主に2つの方法があります。ひとつは Files クラスの delete() メソッドを使う方法、もうひとつは File クラスのインスタンスに対して delete() メソッドを呼び出す方法です。

この記事では、それぞれの具体的なコード例とともに、ファイルやディレクトリを安全に削除するための手法を詳しく解説します。

Filesクラスを使ってファイルを削除する

まずは、Files クラスを使用してファイルを削除するコード例を見てみましょう。

import java.io.IOException;
import java.nio.file.*;

public class DeleteFile {

    public static void main(String[] args) {
        Path path = FileSystems.getDefault().getPath("./src/test/resources/newFile.txt");
        try {
            Files.delete(path);
        } catch (NoSuchFileException x) {
            System.err.format("%s: no such" + " file or directory%n", path);
        } catch (IOException x) {
            System.err.println(x);
        }
    }
}

上記のコードでは、./src/test/resources/ ディレクトリ内にある newFile.txt というファイルを削除しています。

複数の catch() ブロックを設けることで、削除処理中に発生しうるさまざまなエラーを適切に捕捉できます。たとえば、NoSuchFileException を個別にキャッチすれば、指定したファイルが存在しない場合の処理を明確に分離でき、デバッグもしやすくなります。

Fileクラスを使ってファイルを削除する

Files クラスの代わりに、従来からある File クラスのインスタンスに対して delete() メソッドを呼び出すことでも、ファイルを削除できます。

import java.io.File;

public class DeleteFile {

    public static void main(String[] args) {
        File myFile = new File("./src/test/resources/newFile.txt");
        if (myFile.delete()) {
            System.out.println("Deleted the file: " + myFile.getName());
        } else {
            System.out.println("Failed to delete the file.");
        }
    }
}

File クラスの delete() メソッドは、削除に成功した場合は true を、失敗した場合は false を返します。そのため、戻り値を判定することで、削除の成否に応じた処理を簡単に分岐させることが可能です。例外をスローしないシンプルなAPIなので、簡易的なスクリプトなどでよく使われます。

ファイルが存在する場合のみ削除する(deleteIfExists)

削除対象のファイルが存在するかどうか事前に確認したい場合は、deleteIfExists() メソッドが便利です。

import java.io.IOException;
import java.nio.file.*;

public class DeleteFile {
    public static void main(String[] args) {
        Path path = FileSystems.getDefault().getPath("./src/test/resources/newFile.txt");
        try {
            Files.deleteIfExists(path);
        } catch (IOException x) {
            System.err.println(x);
        }
    }
}

上記のコード例では、ファイルが存在しない場合でも NoSuchFileException はスローされず、単に何もせずに正常終了します。これにより、存在チェックと削除処理を1つのメソッド呼び出しで完結できるため、コードがすっきりします。

ディレクトリを削除する

これまで紹介したコードは、フォルダ(ディレクトリ)の削除にもそのまま利用できます。

ただし注意点として、ディレクトリが空でない場合は DirectoryNotEmptyException がスローされます。そのため、中身のあるディレクトリを削除しようとする場合は、この例外を明示的にキャッチして適切に処理する必要があります。

import java.io.IOException;
import java.nio.file.*;

public class DeleteFile {

    public static void main(String[] args) {
        Path path = FileSystems.getDefault().getPath("./src/test/resources");
        try {
            Files.deleteIfExists(path);
        } catch (NoSuchFileException x) {
            System.err.format("%s: no such" + " file or directory%n", path);
        } catch (DirectoryNotEmptyException x) {
            System.err.format("%s not empty%n", path);
        } catch (IOException x) {
            System.err.println(x);
        }
    }
}

なお、Java標準APIには「ディレクトリを再帰的に丸ごと削除する」機能は用意されていません。空でないディレクトリをまとめて削除したい場合は、Files.walk() を使って配下のファイル・サブディレクトリを走査し、深い階層から順番に削除するか、Apache Commons IO の FileUtils.deleteDirectory() などの外部ライブラリを利用するとよいでしょう。

まとめ

  • ファイル削除には Files.delete() または File.delete() を使用する
  • 存在チェックを兼ねたい場合は Files.deleteIfExists() が便利
  • 空でないディレクトリを削除すると DirectoryNotEmptyException が発生するので注意
  • エラーハンドリングには複数の catch() ブロックを活用する
  • Javaでファイルを作成する方法
  • Javaでファイルに書き込む方法
  1. Androidでファイルやフォルダを見えなくする方法|ピリオドの付け方と隠しアプリ活用術

    Androidスマホでファイルやフォルダを人目から隠したいと思ったことはありませんか?画面ロックをかければ覗き見を防げますし、フォルダにパスワードを設定すれば不正アクセスも阻止できます。しかし、さらに一歩進んで、ファイルやフォルダそのものを「見えなくする」ことができたらどうでしょう。 この記事では、Android OSの仕組みを利用した簡単なトリックと、便利なアプリを使った方法の2つをご紹介します。 Androidでファイルやフォルダを非表示にする手順 まず、このトリックを実行するにはファイル管理アプリ(ファイラー)が必要です。普段使い慣れたお気に入りのアプリでも問題ありませんが、始める前に

  2. ファイルとフォルダを完全に削除する方法(ごみ箱を経由しない手順)

    パソコン上のファイルやフォルダをごみ箱を経由せずに完全に削除したい場合、特別なソフトは不要です。キーボード操作だけで簡単に行えます。ここでは、その具体的な手順をわかりやすく解説します。 ファイルとフォルダを完全に削除する手順 1. 削除したいファイル・フォルダを選択する まず、削除したいファイルまたはフォルダを探し、クリックして選択します。複数の項目をまとめて選択したい場合は、「Ctrl」キーを押しながら各ファイルをクリックすると効率的です。 2. 「Shift」キーを押しながら「Delete」キーを押す ファイルやフォルダを選択した状態のまま、キーボードの「Shift」キーを押しなが