Автор оригинала: Eugen Paraschiv.
В этой краткой статье показано, как удалить файл на Java – сначала с помощью JDK 6, затем JDK 7 и, наконец, библиотеки Apache Commons IO .
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
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 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)
И вот он у вас – 4 простых способа удалить файл на Java.