Java - Изтриване на файл

Тази бърза статия илюстрира как да изтриете файл в 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.