Pages

Wednesday, July 1, 2020

Java 8 Stream – How to Read a file line by line

1. Introduction


In this article, You'll learn how to read a file line by line using Java 8 Streams new API methods from Files, BufferedReader lines() methods.

We have already discussed how to read the large files efficiently in java with Streams.

Java 8 Stream – How to Read a file line by line


2. Create a Sample File


In the entire article, We will be using the below program in all examples.

Line 1 : Hello Reader
Line 2 : Welcome to the java programt to . com blog
Line 3 : Here you find the articles on the java concepts
Line 4 : This is example to read this file line by line
Line 5 : Let us see the examples on Java 8 Streams API.

3. Java 8 Read File Line By Line + Stream


Java 8 Files API has a method lines() that read all the lines from the file and keep inside Stream.

package com.javaprogramto.files;

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

public class FIlesLIinesExample {

    public static void main(String[] args) {

        String fileLocation = "/Users/venkateshn/Documents/VenkY/blog/workspace/CoreJava/src/main/resources/dummy.txt";

        Path filePath = Paths.get(fileLocation);

        try {

           Stream<String> allLines = Files.lines(filePath);

            System.out.println("File contents are : ");
           allLines.forEach( line -> System.out.println(line));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Output:

File contents are :
Line 1 : Hello Reader
Line 2 : Welcome to the java programt to . com blog
Line 3 : Here you find the articles on the java concepts
Line 4 : This is example to read this file line by line
Line 5 : Let us see the examples on Java 8 Streams API.

4. Java 8 Read File Line By Line + Stream + Filter


Additionally, you can also apply the filter on top of each line and apply the logic as per your needs.

Let us find the line to print that has java word in it.

package com.javaprogramto.files;
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.stream.Stream;
public class FIlesLIinesFilterExample {

    public static void main(String[] args) {

        String fileLocation = "/Users/venkateshn/Documents/VenkY/blog/workspace/CoreJava/src/main/resources/dummy.txt";
        Path filePath = Paths.get(fileLocation);
        try {

           Stream<String> allLines = Files.lines(filePath);
            allLines.filter( line -> line.indexOf("java") > -1).map(line -> line.toLowerCase()).forEach(line -> System.out.println(line));        } catch (IOException e) {
            e.printStackTrace();        }
    }
}


Java 8 Read File Line By Line + Stream + Filter


Output:

line 2 : welcome to the java programt to . com blog
line 3 : here you find the articles on the java concepts

5. Java 8 Example to convert file contents into List<String> with Stream API


Converting each line into a List using Stream API.

package com.javaprogramto.files;
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;
public class FIlesLIinesToListExample {

    public static void main(String[] args) {

        String fileLocation = "/Users/venkateshn/Documents/VenkY/blog/workspace/CoreJava/src/main/resources/dummy.txt";
        Path filePath = Paths.get(fileLocation);
        try {

           Stream<String> allLines = Files.lines(filePath);
            List<String> linesList = allLines. collect(Collectors.toList());            System.out.println("lines list size : "+linesList.size());        } catch (IOException e) {
            e.printStackTrace();        }
    }
}

Output:

lines list size : 5

6. BufferedReader + Stream API


BufferedReader has added with lines() method that returns a Stream<String>. This lines() method returns all lines as Stream.


package com.javaprogramto.files;
import java.io.BufferedReader;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;

public class FIlesLIinesBufferedReaderExample {

    public static void main(String[] args) {

        String fileLocation = "/Users/venkateshn/Documents/VenkY/blog/workspace/CoreJava/src/main/resources/dummy.txt";
        Path filePath = Paths.get(fileLocation);
        try {

            BufferedReader bufferedReader = Files.newBufferedReader(filePath);
           Stream<String> allLines = bufferedReader.lines();
            List<String> uppperCaseList = allLines.map(value -> value.toUpperCase()).collect(Collectors.toList());
            uppperCaseList.forEach(line -> System.out.println(line));        } catch (IOException e) {
            e.printStackTrace();        }
    }
}

Output:

LINE 1 : HELLO READER
LINE 2 : WELCOME TO THE JAVA PROGRAMT TO . COM BLOG
LINE 3 : HERE YOU FIND THE ARTICLES ON THE JAVA CONCEPTS
LINE 4 : THIS IS EXAMPLE TO READ THIS FILE LINE BY LINE
LINE 5 : LET US SEE THE EXAMPLES ON JAVA 8 STREAMS API.
Disconnected from the target VM, address: '127.0.0.1:50139', transport: 'socket'

7. Conclusion


In this article, we have seen how to read the file using Java 8 Stream api lines() methods with Files and BufferedReader.

4 ways to read the CSV files in Java

Another article how to read files line by line with Scanner and RandomAccessFile.

As usual, all examples are shown on GitHub.

Ref 1
Ref 2

Oracle API Lines()

No comments:

Post a Comment

Please do not add any spam links in the comments section.