Files.walkFileTree() из пакета java.nio.file позволяет рекурсивно обходить дерево каталогов и выполнять сложные операции. Это гибкий и удобный способ работать с файловой системой, включая чтение, обработку, копирование или удаление файлов.🔍 Как это работает?
1️⃣ Реализуется интерфейс
FileVisitor, который определяет действия для каждой операции.2️⃣ Можно обрабатывать файлы и директории на каждом этапе обхода.
📌 Пример: удаление дерева каталогов
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class WalkFileTreeExample {
public static void main(String[] args) throws IOException {
Path startPath = Paths.get("example_directory");
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("Deleting file: " + file);
Files.delete(file); // Удаляем файл
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
System.out.println("Deleting directory: " + dir);
Files.delete(dir); // Удаляем директорию после удаления её содержимого
return FileVisitResult.CONTINUE;
}
});
}
}
🔗 Ключевые методы
FileVisitor:visitFile() — вызывается для каждого файла.postVisitDirectory() — вызывается после обхода содержимого директории.preVisitDirectory() — вызывается перед входом в директорию.visitFileFailed() — обрабатывает ошибки доступа.✨ Когда использовать?
1️⃣ Для удаления, копирования или архивирования файлов/папок.
2️⃣ Для поиска файлов по сложным критериям.
3️⃣ Для выполнения массовых операций с файлами (изменение атрибутов, анализ).
💡 Совет: Используйте
SimpleFileVisitor, чтобы переопределять только нужные методы, а не реализовать весь интерфейс FileVisitor.#Java #Files #FileVisitor
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1