Organizational Research By

Surprising Reserch Topic

Reading a text file in Java


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 the text file:

1 62 4 55 5 6 77

I want to have it in an arraylist as [1, 62, 4, 55, 5, 6, 77]. How can I do it in Java?


asked Jun 18, 2015 in Core java by rajesh
0 votes
87 views



Related Hot Questions

1 Answer

0 votes
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());
answered Jun 18, 2015 by rajesh

...