Pages

Tuesday, March 30, 2021

Java 8 - How To Read A File?

1. Overview

In this tutorial, We'll learn how to read a file line by line in java and print the files content onto console with example program.

First, let us use the older java version for example demonstration and next will learn how to do the same in the newer java 8 api.

Java 8 - How To Read A File?


2. Java Read File Example

First, Use BufferedReader.readLine() method to get the each line from the file.

Example:

package com.javaprogramto.files.read;

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

/**
 * Example to read the file in java
 * 
 * @author javaprogramto.com
 *
 */
public class ReadFileBeforeJava8 {

	public static void main(String[] args) throws IOException {
		String fileLocation = "/Users/workspace/CoreJava/src/main/java/com/javaprogramto/files/read/student.txt";

		FileReader fileReader = new FileReader(fileLocation);

		BufferedReader bufferedReader = new BufferedReader(fileReader);
		String line;
		int index = 1;

		while ((line = bufferedReader.readLine()) != null) {
			System.out.println("line " + index + " : " + line);
			index++;
		}
	}
}
 

Output:

line 1 : student name - Java Learner
line 2 : Location - India

 

3. Java Example To Read CSV File

Next, Use the same concept to read the csv file in java but first line will be the csv header and the remaining lines will be holding the actual values.


package com.javaprogramto.files.read;

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

/**
 * Example to read the CSV file in java
 * 
 * @author javaprogramto.com
 *
 */
public class ReadCSVFileBeforeJava8 {

	public static void main(String[] args) throws IOException {
		String fileLocation = "/Users/workspace/CoreJava/src/main/java/com/javaprogramto/files/read/student.csv";

		FileReader fileReader = new FileReader(fileLocation);

		BufferedReader bufferedReader = new BufferedReader(fileReader);
		String csvLine;
		int index = 1;
		String header = bufferedReader.readLine();
				
		System.out.println("CSV header : "+header);
		while ((csvLine = bufferedReader.readLine()) != null) {
			System.out.println("csv line " + index + " : " + csvLine);
			index++;
		}
	}
}
 

Output:

CSV header : student id,name,age
csv line 1 : 100,Jhon,30
csv line 2 : 101,Shella,35
csv line 3 : 102,Dhon,40
 

4. Java 8 Streams - Read File Example - Files.readLines()

Further more, Use method Files.readLines() method to get the all the lines in the form of java 8 Stream. Next, use forEach() method to get the each line of file and print into the console.


package com.javaprogramto.files.read;

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

/**
 * Java 8 example to read the file using Streams.
 * 
 * @author javaprogramto.com
 *
 */

public class Java8ReadFileExample1 {

	public static void main(String[] args) {

		Path filePath = Path.of(
				"/Users/workspace/CoreJava/src/main/java/com/javaprogramto/files/read/student.csv");

		Stream<String> stream = null;
		try {
			stream = Files.lines(filePath);
		} catch (IOException e) {
			e.printStackTrace();
		}

		stream.forEach(System.out::println);

	}

} 

Output:

student id,name,age
100,Jhon,30
101,Shella,35
102,Dhon,40
 

5. Java 8 Streams + BufferedReader.lines()

Finally, learn another new method of java 8 api is BufferedReader.lines() method which returns the Stream<String>.


package com.javaprogramto.files.read;

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;

/**
 * Java 8 example to read the file using Streams + BufferedReader.lines().
 * 
 * @author javaprogramto.com
 *
 */

public class Java8ReadFileExample2 {

	public static void main(String[] args) throws IOException {

		Path filePath = Path.of(
				"/Users/workspace/CoreJava/src/main/java/com/javaprogramto/files/read/student.csv");

		BufferedReader br = Files.newBufferedReader(filePath);

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

		list.forEach(System.out::println);

	}
}
 

6. Conclusion

In this article, we have seen how to read the file in java 8 streams with examples.

GitHub

Java 8 Streams Tutorial

Java 8 forEach Stream collect()

No comments:

Post a Comment

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