Тази бърза статия илюстрира как да изтриете файл в 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); }
Имайте предвид, че все още можем да определим дали операцията е била успешна или не, като просто проверим връщаната стойност на метода за изтриване.
Сега - ако искаме да бъде хвърлено изключение:
@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.