当前位置: 首页 > 面试题库 >

在Stream上进行收集操作是否会关闭流和基础资源?

淳于飞文
2023-03-14
问题内容

下面的代码是否需要包装在try-with-resources中,以确保基础文件已关闭?

List<String> rows = Files.lines(inputFilePath).collect(Collectors.toList());

问题答案:

作为重载Files#lines(Path, Charset)方法状态的javadoc

返回的流封装了Reader。如果需要及时处理文件系统资源,try-with- resources则应使用该构造来确保在流操作完成之后调用流的close方法。

所以是的,在语句中包装Stream返回的。(或适当关闭它。)lines``try- with- resources



 类似资料:
  • JavaDoc for没有提到关闭底层的: https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close-- 从课堂上复制的描述:Reader 关闭流并释放与之关联的所有系统资源。流关闭后,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。

  • 我想测试一个返回流的方法。 现在,我已经为当somecondition=true时的情况编写了以下测试

  • 考虑以下代码: 终端操作(如forEach)是否关闭已打开的底层文件? 请参阅文件javadoc的相关部分。列表: 返回的流封装了DirectoryStream。如果需要及时处理文件系统资源,则应使用try-with-resources构造来确保在流操作完成后调用流的close方法。 如果它不调用,那么在生成可维护代码时调用它的最佳替代方案是什么?

  • 问题内容: 考虑以下代码: 终端操作(如)是否关闭已打开的基础文件? 请参阅Files.list的javadoc的相关部分: 返回的流封装了DirectoryStream。如果需要及时处理文件系统资源,则应使用try-with- resources构造来确保在流操作完成之后调用流的close方法。 如果不调用,那么在生成可维护代码时最好的替代方法是什么? 问题答案: 终端操作员不会自动关闭流。考虑

  • 问题内容: 我正在尝试使用Stream API生成Order实例。我有一个创建订单的工厂函数,并且使用DoubleStream初始化订单金额。 如果我使用文字(1.0)初始化Order实例,则可以正常工作。当我使用doubleStream创建随机数量时,将引发异常。 问题答案: 答案在(重点是我的)的javadoc中: 流仅应操作一次(调用中间流或终端流操作) 。例如,这排除了“分叉”流,其中相同

  • AFAIK对流求和的唯一方法是: 这里的问题是,每次调用都会创建一个新的,而不是更改可变类型。 对于