簡體   English   中英

如何將 Java 8 字符串 Stream 和 append 行迭代到字符串?

[英]How to iterate over Java 8 String Stream and append line to String?

我有一個方法使用下面的代碼基於其他資源如何使用 Java 8 stream 迭代文件:


String result = "";

try (Stream<String> stream = Files.lines(Paths.get("/home/user/file.txt"))) {
   stream.forEach(System.out::println);
} catch (IOException e) {
   e.printStackTrace();
}

但是,我想將這些行保存到 += 一個字符串,而不是控制台。

我在下面嘗試了這兩個,但都沒有通過 IDE 驗證:

stream.forEach(thisString -> result += thisString);

stream.forEach(result += this);

stream.forEach(result::this);

append 每個結果從 foreach 循環到字符串 object 的正確方法是什么?

如果您只想將整個文件作為字符串讀取,則無需使用 Stream。 如果您使用的是 Java 11,則可以使用Files.readString()

try {
    String result = Files.readString(Paths.get("/home/user/file.txt"));
    System.out.println(result);
} catch (IOException e) {
    e.printStackTrace();
}

如果您需要 Java 8 解決方案,請參閱 Holger 的評論。

Hadi J在他的評論中給了你答案

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class FileJoin {

    public static void main(String[] args) {
        String result = "";

        try (Stream<String> stream = Files.lines(Paths.get("/home/user/file.txt"))) {
           result = stream.collect(Collectors.joining());
        } catch (IOException e) {
           e.printStackTrace();
        }
        System.out.println(result);
    }
}

暫無
暫無

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

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