一个java 8流,用于映射和收集除第一个项目之外的所有项目

bma*_*ies 5 java java-8 java-stream

我有一个可能很大的文件的文件格式,其中第一行是特殊的.我想打开文件一次并将其视为一个行流,但处理第一行与所有其他行不同.其他人得到地图/收集,第一行需要被解析成一些标志.有办法吗?

这开始于:

result = Files.lines(path).map(something).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

除了我想转移第一行.

Mis*_*sha 9

如果你只需要打开一次文件,最简单的方法就是创建一个BufferedReader,获取第一行,然后流式传输其余部分:

BufferedReader reader = Files.newBufferedReader(path);

String firstLine = reader.readLine();

result = reader.lines()
    .map(something)
    .collect(toList());
Run Code Online (Sandbox Code Playgroud)

  • @HankD对,`reader`应该在try-with-resources块中设置. (3认同)
  • 请注意,与`Files.lines()`不同,``BufferedReader.lines()`返回的`Stream`在`Stream`上调用`close()`时不会关闭文件. (2认同)