Java – How to read a file

In Java, there are few ways to read a file.

1. Java 8 – Files.lines, it will return a Stream


	//@Since 1.8

	Stream<String> lines = Files.lines(Paths.get("app.log"));

	List<String> content = lines.collect(Collectors.toList());

2. Java 7 – Files.readAllBytes or Files.readAllLines


	//@Since 1.7
	
	// Returns a byte[]
	byte[] bytes = Files.readAllBytes(Paths.get("app.log"));
	String content = new String(bytes);
	
	// Returns a List String
	List<String> content = Files.readAllLines(Paths.get("app.log"));

3. And this classic BufferedReader


	try (FileReader reader = new FileReader("app.log");
		BufferedReader br = new BufferedReader(reader)) {

		// read line by line
		String line;
		while ((line = br.readLine()) != null) {
			System.out.println(line);
		}

     } catch (IOException e) {
            //e
     }

1. Files.lines

In Java 8, we can use Files.lines to read a file into a Stream, it will close the resources (opened file) automatically.

app.log

Line 1
Line 2
Line 3
Line 4
Line 5

@FileExample1.java


package com.mkyong;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class FileExample1 {

    public static void main(String[] args) {

        try {

            Stream<String> lines = Files.lines(Paths.get("app.log"));
            List<String> content = lines.collect(Collectors.toList());
            content.forEach(x -> System.out.println(x));

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }
    }

}
Terminal

Line 1
Line 2
Line 3
Line 4
Line 5

2. Files.readAllBytes

In Java 7, we can use Files.readAllBytes or Files.readAllLines to read a file, it will close the resources (opened file) automatically.

FileExample2.java

package com.mkyong;

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

public class FileExample2 {

    public static void main(String[] args) {

        try {

            byte[] bytes = Files.readAllBytes(Paths.get("app.log"));
            String content = new String(bytes);

            System.out.println(content);

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }
    }

}

Output

Terminal

Line 1
Line 2
Line 3
Line 4
Line 5

3. BufferedReader

3.1 A classic BufferedReader with try-with-resources to auto close the resources.

FileExample3.java

package com.mkyong;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileExample3 {

    public static void main(String[] args) {

        try (FileReader reader = new FileReader("app.log");
             BufferedReader br = new BufferedReader(reader)) {

            // read line by line
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }
    }

}

3.2 In the old days, we have to close everything manually.

FileExample3.java

package com.mkyong.calculator;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileExample3 {

    public static void main(String[] args) {

        BufferedReader br = null;
        FileReader fr = null;

        try {

            fr = new FileReader("app.log");
            br = new BufferedReader(fr);

            // read line by line
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        } finally {
            try {
                if (br != null)
                    br.close();

                if (fr != null)
                    fr.close();
            } catch (IOException ex) {
                System.err.format("IOException: %s%n", ex);
            }
        }

    }

}

4. Scanner

Let end this article with the classic Scanner example.

FileExample4.java

package com.mkyong;

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class FileExample4 {

    public static void main(String[] args) {

        try (FileReader fr = new FileReader("app.log");
             Scanner scanner = new Scanner(fr)) {

            StringBuilder sb = new StringBuilder();
            while (scanner.hasNext()) {
                sb.append(scanner.nextLine()).append("\n");
            }

            System.out.println(sb.toString());

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }

    }

}

References

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
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Carol Recent comment authors
newest oldest most voted
Carol
Guest
Carol

Thanks!