Java: How to read a text file

后端 未结 9 2249
青春惊慌失措
青春惊慌失措 2020-11-22 06:58

I want to read a text file containing space separated values. Values are integers. How can I read it and put it in an array list?

Here is an example of contents of t

9条回答
  •  攒了一身酷
    2020-11-22 07:03

    You can use Files#readAllLines() to get all lines of a text file into a List.

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

    Tutorial: Basic I/O > File I/O > Reading, Writing and Creating text files


    You can use String#split() to split a String in parts based on a regular expression.

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

    Tutorial: Numbers and Strings > Strings > Manipulating Characters in a String


    You can use Integer#valueOf() to convert a String into an Integer.

    Integer i = Integer.valueOf(part);
    

    Tutorial: Numbers and Strings > Strings > Converting between Numbers and Strings


    You can use List#add() to add an element to a List.

    numbers.add(i);
    

    Tutorial: Interfaces > The List Interface


    So, in a nutshell (assuming that the file doesn't have empty lines nor trailing/leading whitespace).

    List 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);
        }
    }
    

    If you happen to be at Java 8 already, then you can even use Stream API for this, starting with Files#lines().

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

    Tutorial: Processing data with Java 8 streams

提交回复
热议问题