NIO создание и удаление папок и файла
ковыряю NIO и столкнулся с проблемой, точнее с двумя.
1) создание папки files в корне проекта и две вложенные папки с файлом в последней.
Path pathDir = Path.of("files", "firstDir", "secondDir"); Path pathFile = Path.of("files", "firstDir", "secondDir", "file.txt"); Files.createDirectories(pathDir); Files.createFile(pathFile);
можно это как-нибудь объединить в одно выражение, чтобы не создавать раздельно папки и файлы? 2) удаление папок и файла
Files.deleteIfExists(pathFile); //удаляет только файл Files.deleteIfExists(pathDir); // удаляет только последнюю папку secondDir
удаляет по одному элементу, как удалить все папки и файл сразу? нашёл такой пример, но он тоже удаляет только файл
Files.walk(pathFile) .sorted(Comparator.reverseOrder()) .map(Path::toFile) .forEach(File::delete);
и этот вариант удаляет только один файл
try < Files.walkFileTree(pathFile, new SimpleFileVisitor() < @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException < System.out.println("delete file: " + file.toString()); Files.delete(file); return FileVisitResult.CONTINUE; >@Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException < Files.delete(dir); System.out.println("delete dir: " + dir.toString()); return FileVisitResult.CONTINUE; >>); > catch (IOException e)
Как удалить файл или папку в Java?

Ранее мы узнали как создать файл в Java, а в этой статье узнаем как удалить файл в Java.
Как работает метод delete(). Теория
Для удаления файлов или папок в Java используется метод j ava.io.File delete() . Он возвращает true , если файл удалился успешно и возвращает false , если указанный для удаления файл не существует или не может быть удален. Если вы пытаетесь удалить папку, то этот метод проверяет указанную папку на пустоту. Если папка пуста, то она удаляется, если в папке что-то есть, то метод delete() просто возвращает false , то есть папка не удаляется.
Как работает метод delete(). Практика
Давайте посмотрим на примере простой программы, как удалить файл в Java:
Как удалить каталог в Java с помощью рекурсии?

Ранее мы узнали как создать файл в Java и как удалить файл в Java. Сегодня мы научимся рекурсивно удалять папку в Java. Следует отметить, что папка должна быть непустой, потому что в классе j ava.io.File есть метод удаления файла или пустой папки, но если мы применим его к непустой папке, метод не сработает.
Именно поэтому для удаления папки с файлами и подкаталогами мы будем использовать метод delete() с использованием рекурсии.
Как удалить все папки (с выложенными в них файлами) и файлы из папки?
Контекст следующий: есть одна папка. В ней лежат несколько файлов, а также несколько папок в которых в свою очередь лежит несколько файлов.
Как мне полностью очистить данную папку?
На данный момент попрообовал реализовать через такой код:
recursiveDelete(new File("C:/ProgramData/Ex")); public static void recursiveDelete(File file) throws NullPointerException < if (!file.exists()) return; if (file.isDirectory()) < for (File f : file.listFiles()) < recursiveDelete(f); >> file.delete(); System.out.println("Удаленный файл или папка: " + file.getAbsolutePath()); >
Но он удаляет только некоторые файлы, а про файлы в папках не добирается? Как можно модифицировать данный код, чтобы он очищал папку?
- Вопрос задан более трёх лет назад
- 381 просмотр