Table of Contents
The FileReader class of java.io package provides a seamless and easy-to-use way to read and analyse the contents of a file using Java. The FileReader class, works similar to the FileInputStream class because it reads the file data as a stream. However, unlike the latter which reads files as a stream of bytes, FileReader reads the input as a stream of characters. The operating procedure of FileReader is easy to comprehend as it reflects how anyone would read a document, or file, i.e. "as texts".
Let us look into how FileReader works in Java.
Constructors
The FileReader class in Java has three parameterized with which one can access and read a file. They are:
- FileReader(File file) – This constructor creates an object of FileReader which accepts a java.io.File object as a parameter and opens it in default ‘Read’ mode.
- FileReader(FileDescriptor descriptor) – This constructor creates an object of FileReader which accepts a java.io.FileDescriptor object as a parameter and opens the file referenced by the descriptor object in ‘Read’ mode.
- FileReader(String filePath) – This constructor accepts a java.lang.String object as a parameter and opens the file referenced by the path or URI contained in the String
If the file is not found or cannot be opened, a FileNotFoundException is thrown.
Methods
The FileReader class contains helper methods that one can use to read the contents of a file. As the FileReader reads the file as a stream of characters, only one character is read at a time till the end of file.
Let us take a look at the methods we use to read files using FileReader.
- public int read() throws IOException – The default read() method reads a character from the file and returns the integer value (ASCII) for the character read.
It returns -1 when the end of file is reached. - public int read(char [] a,int offset, int length) – The overriden read() method reads the characters of the file from the offset into a character array(represented here by the variable ‘a’). It returns the number of characters read.
- public void close() – The close method closes the FileReader object so that there is no resource leaks.
Example
Let us look at an example of reading a file with FileReader class.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.io.FileReader; public class TestFileReader { public static void main(String args[]){ String filePath = "C:/Users/Me/Desktop/sample.txt"; try{ FileReader fileReader = new FileReader(filePath); int charRead = 0; while(charRead != -1){ charRead = fileReader.read(); System.out.print((char)charRead); } fileReader.close(); } catch(Exception e){ e.printStackTrace(); } } } |
Output:
In the above example, we read a file containing the text "Hey this is a sample text read using FileReader class" from a file ‘sample.txt’. We use the String parameterized constructor of FileReader class to obtain a FileReader object and then read the characters present in the file till End of File is reached(i.e. Character read is -1).