Table of Contents
1. With Java – JDK 6
Let’s start with the standard Java 6 solution:
@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); }
As you can see – the file must exist before the delete operation; if it doesn’t, the API will not throw any exceptions but will instead return false.
2. With Java – JDK 7
Let’s move on to the JDK 7 solution:
@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); }
Now – this will make better use of exceptions. If the file doesn’t exist when the delete operation is triggered – an NoSuchFileException will be thrown by the API:
java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)
3. With Commons IO
Commons IO allows us to control the exceptions behavior when deleting a File. For a quiet delete that swallows any possible exceptions:
@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); }
Note that we can still determine if the operation was successful or not by simply checking the return value of the delete method.
Now – if we do want an exception to be thrown:
@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")); }
If the file to be deleted doesn’t exist on the filesystem, the API will throw a standard FileNotFoundException:
java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)
And there you have it – 4 simple ways to delete a File in Java.