В 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 имеет удобные функции и интерфейсы для удобной загрузки, фильтрации и перебора каталогов.