TGViewer
Java Books Java Books @java_library · 14.2K subscribers
Post #725 3.29K
☕ Java Tip: рекурсивный обход файловой системы

В Java есть удобный способ рекурсивно обойти все файлы в директории - метод Files.walk().

Он возвращает Stream<Path>, что позволяет легко фильтровать и обрабатывать файлы через Stream API.

Пример - найти все .java файлы в папке src:


import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;

public class Main {
public static void main(String[] args) {
Path startPath = Paths.get("src");

try (Stream<Path> paths = Files.walk(startPath)) {
paths
.filter(Files::isRegularFile)
.filter(path -> path.toString().endsWith(".java"))
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}


Что происходит:

• Files.walk(startPath) - рекурсивно проходит по всем папкам
• filter(Files::isRegularFile) - оставляет только файлы
• endsWith(".java") - фильтр по расширению
• forEach - обработка найденных файлов

Это намного чище, чем писать собственную рекурсивную функцию обхода директорий.

#Java #JavaDev #Programming

⚡️ Полезные ресурсы по Java 🚀 Max

@javatg
  • ❤ 4
  • 👍 2
  • 🔥 2
More from @java_library
  1. Sep 15, 2026Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение…
  2. Sep 12, 2026🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности http…
  3. Sep 10, 2026☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обход…
  4. Sep 10, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Sep 7, 2026☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали сис…
  6. Sep 6, 2026Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/j…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →