Java - ファイルを削除する

Java –ファイルの削除

この簡単な記事では、Javaでファイルを削除する方法を説明します。最初にJDK 6を使用し、次にJDK 7を使用し、最後にApache Commons IOライブラリを使用します。

この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。

1. Javaを使用– JDK 6

標準のJava6ソリューションから始めましょう。

@Test
public void givenUsingJDK6_whenDeletingAFile_thenCorrect() throws IOException {
    new File("src/test/resources/fileToDelete_jdk6.txt").createNewFile();

    File fileToDelete = new File("src/test/resources/fileToDelete_jdk6.txt");
    boolean success = fileToDelete.delete();

    assertTrue(success);
}

ご覧のとおり–the file must exist before the delete operation;そうでない場合、APIは例外をスローしませんが、代わりにfalseを返します。

2. Javaを使用– JDK 7

JDK7ソリューションに移りましょう。

@Test
public void givenUsingJDK7nio2_whenDeletingAFile_thenCorrect() throws IOException {
    Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt"));

    Path fileToDeletePath = Paths.get("src/test/resources/fileToDelete_jdk7.txt");
    Files.delete(fileToDeletePath);
}

さて、これは例外をより有効に活用します。 削除操作がトリガーされたときにファイルが存在しない場合、APIによってNoSuchFileExceptionがスローされます。

java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt
    at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)

3. コモンズIO

Commons IOを使用すると、ファイルを削除する際の例外の動作を制御できます。 可能な例外を飲み込む静かな削除の場合:

@Test
public void givenUsingCommonsIo_whenDeletingAFileV1_thenCorrect() throws IOException {
    FileUtils.touch(new File("src/test/resources/fileToDelete_commonsIo.txt"));
    File fileToDelete = FileUtils.getFile("src/test/resources/fileToDelete_commonsIo.txt");
    boolean success = FileUtils.deleteQuietly(fileToDelete);

    assertTrue(success);
}

deleteメソッドの戻り値をチェックするだけで、操作が成功したかどうかを判断できることに注意してください。

ここで-例外をスローしたい場合:

@Test
public void givenUsingCommonsIo_whenDeletingAFileV2_thenCorrect() throws IOException {
    FileUtils.touch(new File("src/test/resources/fileToDelete.txt"));

    FileUtils.forceDelete(FileUtils.getFile("src/test/resources/fileToDelete.txt"));
}

削除するファイルがファイルシステムに存在しない場合、APIは標準のFileNotFoundExceptionをスローします。

java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)

そして、Javaでファイルを削除する4つの簡単な方法があります。