Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
⌨️ Files.walkFileTree(): мощный инструмент для работы с файловой системой

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
👍61
⌨️ Чтение и запись файла с помощью класса Files

Чтение всего файла в список строк (readAllLines)

import java.nio.file.*;
import java.io.IOException;
import java.util.List;

public class Main {
public static void main(String[] args) throws IOException {
Path path = Paths.get("example.txt");
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);
}
}

📌 Читает весь файл в List<String>, удобно для небольших файлов.

Запись в файл (write)

List<String> lines = List.of("Первая строка", "Вторая строка");
Files.write(Paths.get("output.txt"), lines);

📌 Если файла нет — создаст, если есть — перезапишет.

Добавление в файл (без перезаписи):

Files.write(Paths.get("output.txt"), lines, StandardOpenOption.APPEND);


#java #Files #readAllLines #write
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181