Java Programming Tutorials

Java programming tutorials with many code examples!

Java read text file

Problem:

How to read text file in Java? In this post we’re going to show the most straightforward way of reading text files using java.io.FileReader, thing that every Java developer needs to know!

Solution:

The solution is simple:

  • create an instance of java.io.FileReader,
  • wrap it in a java.io.BufferedReader to read lines,
  • read lines until null is returned.

And here’s the code:

package com.farenda.java.io;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

public class ReadTextFileExample {

    public static void main(String[] args) throws IOException {
        Map<String,Integer> highScores = new LinkedHashMap<>();

        String scoreFile = "highscores.csv";

        try (BufferedReader input = openReader(scoreFile)) {
            System.out.println("File header: " + readHeader(input));

            String row;
            while ((row = input.readLine()) != null) {
                parseRow(row, highScores);
            }
        }

        System.out.println("Read high scores:\n" + highScores);
    }

    private static BufferedReader openReader(String fileName)
            throws IOException {
        // Don't forget to add buffering to have better performance!
        return new BufferedReader(new FileReader(fileName));
    }

    private static String readHeader(BufferedReader input)
            throws IOException {
        return input.readLine();
    }

    private static void parseRow(String row, Map<String, Integer> highScores)
            throws IOException {
        String[] columns = row.split(",");
        highScores.put(columns[0], Integer.valueOf(columns[1]));
    }
}

Now, let’s say that we’ve got the following CSV file, as produced in the post about writing to text files:

$> cat highscores.csv
#name,points
user1,757
user2,482
user3,155
user4,269
user5,31
newUser,680

Now, when we run the above program it will print the following content, read from highscores.csv file:

File header: #name,points
Read high scores:
{user1=757, user2=482, user3=155, user4=269, user5=31, newUser=680}

In the next posts we’ll look at how to work with binary data using Java!

Share with the World!