В этой быстрой статье показано, как удалить файл в Java — сначала с помощью JDK 6, затем JDK 7 и, наконец, с помощью библиотеки ввода-вывода Apache Commons .
Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.
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);
}
Как видите , файл должен существовать до операции удаления ; если это не так, 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
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);
}
Обратите внимание, что мы все еще можем определить, была ли операция успешной или нет, просто проверив возвращаемое значение метода удаления.
Теперь — если мы хотим, чтобы было выброшено исключение:
@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.