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. 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!