簡體   English   中英

如何通過特定數據攔截Java Stream?

[英]How to intercept a Java Stream by a particular data?

我想使用 Java 讀取 a.txt 文件並使用 Java Stream 處理“---”行之前的所有數據。

我用過:

return Files.lines(Path.of(path), StandardCharsets.UTF_8)
        .filter(n -> ...)

但我不知道如何管理線路或訪問 n(lambda 參數)以外的其他線路。

處理“---”行之前的所有數據

要實現此條件,您可以使用 Java 9 Stream.takeWhile() 它需要一個Predicate作為參數。 流處理將在給定謂詞被評估為false的第一個元素之后終止。

return Files.lines(Path.of(path))
    .takeWhile(line -> !"---".equals(line))
    // other logic
    // terminal operation producing the result, like .toList(), collect(Collectors.joining()), etc.

我建議您熟悉這些有關Lambda 表達式Streams的基礎教程。

旁注: UTF_8是默認字符集,如果在目標文件中使用它,則無需在Files.lines()中提供第二個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM