Java - Supprimer un fichier
Cet article rapide explique comment supprimer un fichier en Java - en utilisant d'abord JDK 6, puis JDK 7 et enfin la bibliothèqueApache Commons IO.
Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.
1. Avec Java - JDK 6
Commençons par la solution Java 6 standard:
@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);
}
Comme vous pouvez le voir -the file must exist before the delete operation; si ce n'est pas le cas, l'API ne lèvera aucune exception mais renverra à la place false.
2. Avec Java - JDK 7
Passons à la solution 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);
}
Maintenant, cela fera un meilleur usage des exceptions. Si le fichier n'existe pas lorsque l'opération de suppression est déclenchée, unNoSuchFileException sera généré par l'API:
java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt
at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)
3. Avec Commons IO
Commons IO nous permet de contrôler le comportement des exceptions lors de la suppression d'un fichier. Pour une suppression silencieuse qui englobe toutes les exceptions possibles:
@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);
}
Notez que nous pouvons toujours déterminer si l'opération a réussi ou non en vérifiant simplement la valeur de retour de la méthode delete.
Maintenant, si nous voulons qu'une exception soit levée:
@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"));
}
Si le fichier à supprimer n’existe pas sur le système de fichiers, l’API lancera unFileNotFoundException standard:
java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)
Et voilà - 4 façons simples de supprimer un fichier en Java.