В Java 8 Stream API, в чем разница между DirectoryStream<Path> и Stream<Path>?

Я хочу вернуть поток путей (это файлы, расположенные в определенном каталоге). Мой первоначальный подход был такой:

DirectoryStream getFiles(Path dir) throws IOException {
    Files.newDirectoryStream(dir);
}

... но я хотел бы знать разницу между приведенным выше фрагментом и вторым:

Stream<Path> getFiles(Path dir) throws IOException {
    Spliterator<Path> spl = Files.newDirectoryStream(dir).spliterator();
    return StreamSupport.stream(spl, false);
}

И то и другое DirectoryStream а также Stream являются подчиненными интерфейсами AutoCloseable Но помимо этого, они, кажется, предназначены для разных целей.

Чтобы быть более точным, мой вопрос заключается в следующем:

Каковы концептуальные и функциональные различия между DirectoryStream а также Stream интерфейсы в Java-8?

1 ответ

Каковы концептуальные и функциональные различия между интерфейсами DirectoryStream и Stream в Java-8?

Java Stream API - это API общего назначения, разработанный и реализованный для обеспечения неизменного, ленивого, функционального / декларативного стиля кодирования с любым потоком объектов. Это не характерно для одной области и имеет механизмы для фильтрации, преобразования, агрегирования данных, поступающих из потока.

В то время как DirectoryStream специально разработан для удобной загрузки API, фильтрации и итерации по каталогам файловой системы.

Java Stream API имеет четкие общие функции использования и соответствующие интерфейсы SAM (Single Abstract Method), чтобы упростить кодирование практически для любого варианта использования.

В то время как DirectoryStream имеет удобные функции и интерфейсы для удобной загрузки, фильтрации и перебора каталогов.

Другие вопросы по тегам