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.
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(); } } }
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.