Java: elimina un file

Questo rapido articolo illustra come eliminare un file in Java, prima utilizzando JDK 6, poi JDK 7 e infine la libreria Apache Commons IO.

Questo articolo fa parte della serie "Java - Back to Basic" qui su Baeldung.

1. Con Java - JDK 6

Cominciamo con la soluzione standard 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); }

Come puoi vedere, il file deve esistere prima dell'operazione di cancellazione ; in caso contrario, l'API non genererà eccezioni ma restituirà invece false.

2. Con Java - JDK 7

Passiamo alla soluzione 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); }

Ora, questo farà un uso migliore delle eccezioni. Se il file non esiste quando viene attivata l'operazione di eliminazione, verrà generata un'eccezione NoSuchFileException dall'API:

java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)

3. Con Commons IO

Commons IO ci consente di controllare il comportamento delle eccezioni durante l'eliminazione di un file. Per una cancellazione silenziosa che inghiotte ogni possibile eccezione:

@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); }

Nota che possiamo ancora determinare se l'operazione è andata a buon fine o meno semplicemente controllando il valore di ritorno del metodo di cancellazione.

Ora, se vogliamo che venga generata un'eccezione:

@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")); }

Se il file da eliminare non esiste nel filesystem, l'API lancerà un'eccezione FileNotFoundException standard :

java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)

Ed ecco fatto: 4 semplici modi per eliminare un file in Java.