Java - Удалить файл

Java - Удалить файл

В этой быстрой статье показано, как удалить файл в Java - сначала с помощью JDK 6, затем JDK 7 и, наконец, библиотекиApache Commons IO.

Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.

1. С Java - JDK 6

Начнем со стандартного решения Java 6:

@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

Перейдем к решению JDK 7:

@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. С Commons IO

IO Commons позволяет нам контролировать поведение исключений при удалении файла. Для тихого удаления, которое проглатывает любые возможные исключения:

@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)

И вот, у вас это есть - 4 простых способа удалить файл в Java.