How to Read a File in Java: Top Methods Explained
Learn the most popular ways to read a file in Java. Discover three effective methods to handle file reading in Java, each with its advantages, to help you choose the best approach for your project.
Reading a File in Java
We can read a file in Java using multiple ways. Following are the three most popular ways to read a file in Java:
- Using
FileInputStream()
constructor - Using
FileReader.read()
method - Using
Files.readAllLines()
method
Reading File Using FileInputStream()
Constructor
FileInputStream
is used for reading data from files. The object can be created using the new
keyword, and there are several types of constructors available.
Syntax
The following constructor takes a file name as a string to create an input stream object to read the file:
InputStream f = new FileInputStream("C:/java/hello.txt");
The following constructor takes a file object to create an input stream object to read the file. First, we create a file object using File()
:
File f = new File("C:/java/hello.txt");
InputStream f = new FileInputStream(f);
Example: Reading File Using FileInputStream()
Constructor
The following example demonstrates how to use FileInputStream
to read a file:
package com.example;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileTest {
public static void main(String args[]) {
try {
byte bWrite [] = {65, 66, 67, 68, 69};
OutputStream os = new FileOutputStream("test.txt");
for(int x = 0; x < bWrite.length ; x++) {
os.write( bWrite[x] ); // writes the bytes
}
os.close();
InputStream is = new FileInputStream("test.txt");
int size = is.available();
for(int i = 0; i < size; i++) {
System.out.print((char)is.read() + " ");
}
is.close();
} catch (IOException e) {
System.out.print("Exception");
}
}
}
Output
A B C D E
Reading File Using FileReader.read()
Method
FileReader.read()
method of the FileReader
class allows reading characters from a file:
Syntax
// Get an existing file
File file = new File("d://test//testFile1.txt");
// Read content
FileReader reader = new FileReader(file);
int c;
while ((c = reader.read()) != -1) {
char ch = (char) c;
System.out.print(ch);
}
Example: Reading File Using FileReader.read()
Method
package com.example;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTest {
public static void main(String args[]) {
try {
File file = new File("d://test//testFile1.txt");
// Create the file
if (file.createNewFile()) {
System.out.println("File is created!");
} else {
System.out.println("File already exists.");
}
// Write content
FileWriter writer = new FileWriter(file);
writer.write("Test data");
writer.close();
// Read content
FileReader reader = new FileReader(file);
int c;
while ((c = reader.read()) != -1) {
char ch = (char) c;
System.out.print(ch);
}
} catch (IOException e) {
System.out.print("Exception");
}
}
}
Output
File is created! Test data
Reading File Using Files.readAllLines()
Method
Files.readAllLines()
is a newer method that reads all the content of a file as a list of strings.
Syntax
List content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));
Example: Reading File Using Files.readAllLines()
Method
package com.example;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;
public class FileTest {
public static void main(String args[]) {
try {
String data = "Test data";
Files.write(Paths.get("d://test/testFile3.txt"), data.getBytes());
List lines = Arrays.asList("1st line", "2nd line");
Files.write(Paths.get("file6.txt"), lines, StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
List content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));
System.out.println(content);
content = Files.readAllLines(Paths.get("file6.txt"));
System.out.println(content);
} catch (IOException e) {
System.out.print("Exception");
}
}
}
Output
[Test data] [1st line, 2nd line]