一尘不染

Java:如何读取文本文件

java

我想读取一个包含空格分隔值的文本文件。值是整数。如何读取并将其放入数组列表?

这是文本文件内容的示例:

1 62 4 55 5 6 77

我想将它包含在arraylist中[1, 62, 4, 55, 5, 6, 77]。如何用Java做到这一点?


阅读 516

收藏
2020-02-29

共1个答案

一尘不染

你可以用来Files#readAllLines()将文本文件的所有行都放入List<String>

for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    // ...
}

教程:基本I / O>文件I / O>读取,写入和创建文本文件

你可以用来基于正则表达式String#split()拆分a String部分。

for (String part : line.split("\\s+")) {
    // ...
}

教程:数字和字符串>字符串>操纵字符串中的字符

你可以使用Integer#valueOf()将转换StringInteger

Integer i = Integer.valueOf(part);

教程:数字和字符串>字符串>在数字和字符串之间转换

你可以使用List#add()将元素添加到中List

numbers.add(i);

教程:接口>列表接口

因此,简而言之(假设文件没有空行,也没有尾随/前导空格)。

List<Integer> numbers = new ArrayList<>();
for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    for (String part : line.split("\\s+")) {
        Integer i = Integer.valueOf(part);
        numbers.add(i);
    }
}

如果你碰巧已经使用Java 8,那么你甚至可以为此使用Stream APIFiles#lines()。

List<Integer> numbers = Files.lines(Paths.get("/path/to/test.txt"))
    .map(line -> line.split("\\s+")).flatMap(Arrays::stream)
    .map(Integer::valueOf)
    .collect(Collectors.toList());
2020-02-29