【问题标题】:A java 8 stream that maps and collects all except the first item映射和收集除第一项之外的所有内容的 java 8 流
【发布时间】:2016-05-11 17:31:03
【问题描述】:

我有一个文件格式,用于第一行特殊的潜在大文件。我想打开文件一次并将其视为行流,但第一行的处理方式与所有其他行不同。其他人得到地图/收集,第一行需要被解析成一些标志。有什么办法吗?

开头是:

result = Files.lines(path).map(something).collect(Collectors.toList());

除了我想转移第一行。

【问题讨论】:

标签: java java-8 java-stream


【解决方案1】:

如果您只能打开文件一次,最简单的做法是创建一个BufferedReader,获取第一行,然后流过其余部分:

BufferedReader reader = Files.newBufferedReader(path);

String firstLine = reader.readLine();

result = reader.lines()
    .map(something)
    .collect(toList());

【讨论】:

  • 请注意,与Files.lines() 不同,BufferedReader.lines() 返回的Streamclose() 上调用Stream 时不会关闭文件。
  • @HankD 对,reader 应该设置在 try-with-resources 块中。
  • 谢谢;我没有想到这个相当不错的主意。
猜你喜欢
  • 2017-09-22
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 2012-12-03
  • 2012-12-18
  • 2015-01-29
  • 1970-01-01
相关资源
最近更新 更多