逐行从文本读取int

时间:2019-03-01 15:39:24

标签: java arrays file

我有一个3行的int文本,这些数据是我需要放入一些变量中的数据,我想像数组一样一个接一个地访问所有数据,我可以读取firt行,但不知道该怎么去下一行,我知道这是一个愚蠢的事情,但是我被阻止了

public void Load () throws IOException {
    BufferedReader   in = new BufferedReader(new FileReader("prova.txt"));

    String inputLine = in.readLine();
    String [] fields = inputLine.split(" "); // Splits at the space
    int i=0;
    while(inputLine!=null) {
    System.out.println(fields[i]); //prints out name
    i++;
    }

}

我想访问任何行的单个int,任何提示吗?

4 个答案:

答案 0 :(得分:3)

您可以使用来自Java8的Files.readAllLines()从文件中获取所有行:

List<String> lines = Files.readAllLines(Paths.get("prova.txt"));

for (String line : lines) {
    String[] split = line.split(" "));
    // use element access by index to do what you want
}

如果您熟悉流api,也可以:

Files.lines(Paths.get("prova.txt"))
        .flatMap(s -> Arrays.stream(s.split(" ")))
        .forEach(System.out::println);

答案 1 :(得分:0)

使用Java NIO API。

Path myPath = Paths.get("prova.txt")
List<String> contents = Files.readAllLines(myPath)
for(String line : contents) {
    System.out.println(line);
}

答案 2 :(得分:0)

您必须迭代两次:遍历文件中的各行(例如,使用Files.lines(...)),然后遍历该行中的各字段(使用for循环)。 像这样:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class Snippet {
    public static void main(String[] args) throws IOException {
        new Snippet().Load();
    }

    public void Load() throws IOException {
        Files.lines(new File("prova.txt").toPath()).forEach(line -> {
            String[] fields = line.split("\\s"); // Splits at the space
            for (String field : fields) {
                System.out.println(field);
            }
            System.out.println();
        });

    }
}

HTH!

答案 3 :(得分:0)

您正在做的错误是您仅读取第一行并尝试通过不断增加 i 的值来打印第一行中的所有内容,结果将出现空指针异常。尝试过与您相同的方法。如果您有任何疑问,请告诉我。

public class Snippet {
public static void Load() throws IOException {
    BufferedReader in = new BufferedReader(new FileReader("prova.txt"));

    String inputLine = in.readLine();
    // Splits at the space

    while (inputLine != null) {
        int i = 0;
        String[] fields = inputLine.split(" ");
        while (i < fields.length) {
            System.out.println(fields[i]); // prints out name
            i++;
        }
        inputLine = in.readLine();
    }

}

}

我在这里正在阅读每行,根据空间将其拆分,并打印出第一行中的所有内容,然后在循环结束时读取下一行。