我想返回一个路径流(这些是位于某个目录中的文件)。我最初的方法是:
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-8中DirectoryStream
和Stream
接口之间的概念和功能差异是什么?
答案 0 :(得分:2)
基于概念和功能的差异是什么? Java-8中的DirectoryStream和Stream接口?
Java Stream API是通用API,设计和实现为任何对象流提供不可变,懒惰,功能/声明式编码风格。这不是特定于一个范围,并且具有过滤,转换,聚合来自流的数据的机制。
DirectoryStream专门设计用于在易于使用的API中处理文件系统目录的加载,过滤和迭代。
Java Stream API具有明确的通用用法功能和相应的SAM(单一抽象方法)接口,可轻松编写几乎所有用例的编码。
DirectoryStream具有方便的功能和接口,可以轻松地对目录进行加载,过滤,迭代。