首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Files.newDirectoryStream对Files.list

Files.newDirectoryStream对Files.list
EN

Stack Overflow用户
提问于 2015-11-12 10:06:37
回答 1查看 4.8K关注 0票数 12

我知道Files.list(路径)在内部使用Files.newDirectoryStream(路径),基本上只是封装DirectoryStream。

  1. 但是,我不明白,当我想使用第一个或后一个。
  2. 如果我想使用流API,这仅仅是一种方便的方法吗?我自己也可以很容易地做到这一点,见这个问题
  3. 如果查看Files.list的实现,内部DirectoryStream引发的异常将被包装在UncheckedIOException中。有什么我该知道的吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 10:17:50

  1. 一般来说,这是一个风格问题。如果要使用外部迭代(for(Path path : dirStream)),请使用newDirectoryStream。如果您想要利用Stream操作(如mapfiltersorted等),请使用list
  2. 区别在于异常处理。在Files.list遍历期间发生的任何异常都将从DirectoryIteratorException转换为UncheckedIOException。另一个细微的区别是,分配器显式地报告了DISTINCT特性,所以如果您执行Files.list().distinct()distinct()步骤将被优化(众所周知,元素是不同的)。当使用Iterable.spliterator()默认实现时,将不会执行此优化。
  3. 这里没什么特别的。您应该期望在终端流操作执行过程中弹出UncheckedIOException (例如,由于访问网络文件夹时的网络超时)。
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33668859

复制
相关文章

相似问题

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