0

我正在读取 txt 文件中的行,试图一次获取两行(当前行和下一行)。我使用供应商,但仍然得到错误。

Stream<String> lines = Files.lines(Paths.get(fileName));
Supplier<Stream<String>> streamSupplier = () -> lines;
Optional<String> line = streamSupplier.get().skip(offset).findFirst();
Optional<String> nextLine = streamSupplier.get().skip(offset+1).findFirst();

我在这里想念什么?

4

1 回答 1

1

问题是您的供应商没有给您两个流实例:它每次都给您相同的一个。streamSupplier.get()和直接使用没有区别lines

如果你想从流中读取两件事,跳过offset,然后限制 2,然后收集到一个列表:

List<String> items = lines.skip(offset).limit(2).collect(Collectors.toList());

现在您可以从列表中获取这些项目:

Optional<String> line = items.size() > 0 ? Optional.of(items.get(0)) : Optional.empty();
Optional<String> nextLine = items.size() > 1 ? Optional.of(items.get(1)) : Optional.empty();
于 2022-01-28T11:32:57.457 回答