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