【发布时间】:2018-11-19 12:00:01
【问题描述】:
我正在尝试逐行读取一个长文件,同时尝试从该行中提取一些信息。
这里是我正在做的一个例子:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.stream.Stream;
public class ReadFile_Files_Lines {
public static void main(String[] pArgs) throws IOException {
String fileName = "c:\\temp\\sample-1GB.txt";
File file = new File(fileName);
try (Stream<String> linesStream = Files.lines(file.toPath())) {
linesStream.forEach(line -> {
System.out.println(line);
});
}
}
}
我的文件中的一行分为三个部分:
10 1010101 15
我希望每次都阅读这三个信息。 喜欢:
String str1 = line[0];
String str2 = line[1];
String str3 = line[2];
如果我不应该将流转换为集合,我正在寻找的解决方案会更好。 我将使用这 3 个字符串来创建图形数据结构,例如:
createGraphe(str1,str2,str3);`
我知道我可以发送完整的字符串,但在学习 Stream 时,我很想知道如何提取这些信息。
谢谢。
【问题讨论】:
-
你的问题我不清楚。你想用这三个元素做什么?如果您不想,请不要存储它
-
Files.readAllLines(Paths.get("c:\\temp\\sample-1GB.txt"))与String.split(" ");结合起来获得单行的值怎么样? -
@deHaar 这会影响将完整文件内容加载到内存中。
-
@user7 我知道...也许没那么多... ;-) long 这个词并不是很具体。但是,是的,可能会有更好的想法。
-
@deHaar 从文件名来看,我猜大约 1GB ;)
标签: java string java-8 java-stream