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

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);
}


DirectoryStreamStream都是AutoCloseable的子接口,但除此之外,它们似乎是为不同目的而设计的。

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

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

最佳答案

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


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

其中,DirectoryStream是专门设计用于在易于使用的API中满足文件系统目录的加载,筛选和迭代的功能。

Java Stream API具有明确的常用功能和相应的SAM(单一抽象方法)接口,可简化几乎所有用例的编码。

DirectoryStream具有方便的功能和接口,可轻松执行目录的加载,筛选和迭代。

10-06 07:46