在Java 8 Stream API中,DirectoryStream <path>和Stream <path>之间的区别是什么?</path> </path>

时间:2015-04-14 01:47:35

标签: java java-8 java-stream directorystream

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

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接口之间的概念和功能差异是什么?

1 个答案:

答案 0 :(得分:2)

  

基于概念和功能的差异是什么?   Java-8中的DirectoryStream和Stream接口?

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

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

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

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