首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从DirectoryStream生成流

如何从DirectoryStream生成流
EN

Stack Overflow用户
提问于 2015-03-02 09:33:02
回答 3查看 8.3K关注 0票数 25

在为DirectoryStream读取API时,我遗漏了许多函数。首先,它建议使用for循环从流转到List。我怀念这样一个事实,那就是DirectoryStream不是Stream

如何从Java8中的Stream中生成DirectoryStream

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-02 09:37:31

DirectoryStream不是一个Stream (在Java8引入streams之前,它从Java7开始就已经存在了),但是它实现了Iterable<Path>接口,这样您就可以编写:

代码语言:javascript
复制
try (DirectoryStream<Path> ds = ...) {
  Stream<Path> s = StreamSupport.stream(ds.spliterator(), false);
}
票数 17
EN

Stack Overflow用户

发布于 2015-03-02 11:10:00

虽然可以使用DirectoryStream方法将Stream转换为Stream,但没有理由这样做。首先创建一个Stream<Path>

与其打电话给Files.newDirectoryStream(Path),不如打电话给Files.list(Path)

newDirectoryStream的重载(它接受额外的Filter )可能被Files.list(Path).filter(Predicate)取代,还有一些附加的操作,比如返回Stream<Path>Files.findFiles.walk,但是,我没有找到要使用“glob pattern”的情况的替代。这似乎是将DirectoryStream转换为Stream可能有用的唯一情况(无论如何,我更喜欢使用正则表达式)…

票数 42
EN

Stack Overflow用户

发布于 2015-03-02 09:37:46

DirectoryStream有一个返回分配器的方法。所以就这么做吧:

代码语言:javascript
复制
Stream<Path> stream = StreamSupport.stream(myDirectoryStream.spliterator(), false);

您可能希望看到这个问题,这基本上就是您的问题归结为:How to create a Stream from an Iterable

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28806416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档