2

我想返回一个路径流(这些是位于某个目录中的文件)。我最初的方法是这样的:

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,但除此之外,它们似乎是为不同的目的而设计的。

更准确地说,我的问题是:

Java-8DirectoryStream和接口之间的概念和基于功能的区别是什么?Stream

4

1 回答 1

2

Java-8 中的 DirectoryStream 和 Stream 接口之间的概念和基于功能的区别是什么?

Java Stream API 是设计和实现的通用 API,为任何对象流提供不可变的、惰性的、函数式/声明式的编码风格。这不是特定于一个范围的,并且具有过滤、转换、聚合来自流的数据的机制。

DirectoryStream 专门设计用于在易于使用的 API 中满足文件系统目录的加载、过滤和迭代。

Java Stream API 具有清晰的常用功能和相应的 SAM(单一抽象方法)接口,以简化几乎任何用例的编码。

DirectoryStream 具有方便的功能和接口,可以轻松进行目录的加载、过滤、迭代。

于 2015-04-14T02:02:48.263 回答