Java – How to read a file into a list?

In Java, there are few ways to read a file line by line into a List

1. Java 8 stream


	List<String> result;
	try (Stream<String> lines = Files.lines(Paths.get(fileName))) {
		result = lines.collect(Collectors.toList());
	}

2. Java 7


	Files.readAllLines(new File(fileName).toPath(), Charset.defaultCharset());

3. Classic BufferedReader example.


	List<String> result = new ArrayList<>();
	BufferedReader br = null;

	try {

		br = new BufferedReader(new FileReader(fileName));

		String line;
		while ((line = br.readLine()) != null) {
			result.add(line);
		}

	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (br != null) {
			br.close();
		}
	}

1. File -> List

1.1 A dummy file

d:\\server.log

a
b
c
d
1
2
3

1.2 Read file into a List

JavaExample.java

package com.mkyong.example;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class JavaExample {

    public static void main(String[] args) {

        String filename = "d:\\server.log";

        try {
            List list = readByJavaClassic(filename);
            list.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    private static List readByJava8(String fileName) throws IOException {
        List<String> result;
        try (Stream<String> lines = Files.lines(Paths.get(fileName))) {
            result = lines.collect(Collectors.toList());
        }
        return result;

    }

    private static List readByJava7(String fileName) throws IOException {
        return Files.readAllLines(new File(fileName).toPath(), Charset.defaultCharset());
    }

    private static List readByJavaClassic(String fileName) throws IOException {

        List<String> result = new ArrayList<>();
        BufferedReader br = null;

        try {

            br = new BufferedReader(new FileReader(fileName));

            String line;
            while ((line = br.readLine()) != null) {
                result.add(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                br.close();
            }
        }

        return result;
    }

}

Output


a
b
c
d
1
2
3

References

  1. Java 8 Stream – Read a file line by line

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

avatar