Java - Видалення файлу

Ця коротка стаття ілюструє, як видалити файл у Java - спочатку за допомогою JDK 6, потім JDK 7 і, нарешті, бібліотеки Apache Commons IO.

Ця стаття є частиною серії "Java - Назад до основного" тут, на 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.