[英]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.