РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
876 of 1163 menu

Класс DirectoryStream

Класс DirectoryStream из пакета java.nio.file предназначен для перебора элементов директории. Он реализует интерфейс Iterable, поэтому его можно использовать в цикле for-each. Объект DirectoryStream создается с помощью статического метода newDirectoryStream класса Files. В первый параметр мы передаем путь к директории (объект Path), во второй - фильтр в виде лямбда-выражения или объекта DirectoryStream.Filter. Класс DirectoryStream реализует интерфейс AutoCloseable, поэтому его следует закрывать после использования, например, через try-with-resources.

Синтаксис

try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) { for (Path entry : stream) { // ... } }

Пример

Давайте переберем все элементы текущей директории и выведем их имена:

import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws IOException { Path dir = Paths.get("."); try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) { for (Path entry : stream) { System.out.println(entry.getFileName()); } } } }

Результат выполнения кода:

"Main.java" "test.txt" "data"

Пример

Давайте отфильтруем только файлы с расширением .txt, используя лямбда-выражение:

import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws IOException { Path dir = Paths.get("."); try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.txt")) { for (Path entry : stream) { System.out.println(entry.getFileName()); } } } }

Результат выполнения кода:

"test.txt" "notes.txt"

Пример

Давайте выведем только поддиректории, используя фильтр через метод isDirectory:

import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws IOException { Path dir = Paths.get("."); try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, Files::isDirectory)) { for (Path entry : stream) { System.out.println(entry.getFileName()); } } } }

Результат выполнения кода:

"data" "src"

Смотрите также

  • класс InputStream,
    который читает данные из потока
  • класс FileInputStream,
    который читает данные из файла
  • класс FileReader,
    который читает символы из файла
  • класс StandardOpenOption,
    который задает режим открытия файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить