File handling in Java using FileWriter and FileReader

23 Feb, 2022
Java FileWriter and FileReader classes are used to write and read data from text files (they are Character Stream classes). It is recommended not to use the FileInputStream and FileOutputStream classes if you have to read and write any textual information as these are Byte stream classes. 
FileWriterFileWriter is useful to create a file writing characters into it. 
This class inherits from the OutputStream class.
The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable. To specify these values yourself, construct an OutputStreamWriter on a FileOutputStream.  
FileWriter is meant for writing streams of characters. For writing streams of raw bytes, consider using a FileOutputStream.
FileWriter creates the output file if it is not present already.
Constructors: 
FileWriter(File file) – Constructs a FileWriter object given a File object.
FileWriter (File file, boolean append) – constructs a FileWriter object given a File object.
FileWriter (FileDescriptor fd) – constructs a FileWriter object associated with a file descriptor.
FileWriter (String fileName) – constructs a FileWriter object given a file name.
FileWriter (String fileName, Boolean append) – Constructs a FileWriter object given a file name with a Boolean indicating whether or not to append the data written.
Methods: 
public void write (int c) throws IOException – Writes a single character.
public void write (char [] stir) throws IOException – Writes an array of characters.
public void write(String str)throws IOException – Writes a string.
public void write(String str, int off, int len)throws IOException – Writes a portion of a string. Here off is offset from which to start writing characters and len is the number of characters to write.
public void flush() throws IOException flushes the stream
public void close() throws IOException flushes the stream first and then closes the writer.
Reading and writing take place character by character, which increases the number of I/O operations and affects the performance of the system.BufferedWriter can be used along with FileWriter to improve the speed of execution.The following program depicts how to create a text file using FileWriter 
Java
// Creating a text File using FileWriterimport java.io.FileWriter;import java.io.IOException;class CreateFile{    public static void main(String[] args) throws IOException    {        // Accept a string        String str = "File Handling in Java using "+                " FileWriter and FileReader";         // attach a file to FileWriter        FileWriter fw=new FileWriter("output.txt");         // read character wise from string and write        // into FileWriter        for (int i = 0; i < str.length(); i++)            fw.write(str.charAt(i));         System.out.println("Writing successful");        //close the file        fw.close();    }}
FileReader
FileReader is useful to read data in the form of characters from a ‘text’ file. 
This class inherited from the InputStreamReader Class.
The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.  
FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.
Constructors: 
FileReader(File file) – Creates a FileReader , given the File to read from
FileReader(FileDescripter fd) – Creates a new FileReader , given the FileDescripter to read from
FileReader(String fileName) – Creates a new FileReader , given the name of the file to read from
Methods: 
public int read () throws IOException – Reads a single character. This method will block until a character is available, an I/O error occurs, or the end of the stream is reached.
public int read(char[] cbuff) throws IOException – Reads characters into an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.
public abstract int read(char[] buff, int off, int len) throws IOException –Reads characters into a portion of an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached. Parameters: cbuf – Destination buffer off – Offset at which to start storing characters len – Maximum number of characters to read  
public void close() throws IOException closes the reader.
public long skip(long n) throws IOException –Skips characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached. Parameters: n – The number of characters to skip 
The following program depicts how to read from the ‘text’ file using FileReader 
Java
// Reading data from a file using FileReaderimport java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;class ReadFile{    public static void main(String[] args) throws IOException    {        // variable declaration        int ch;         // check if File exists or not        FileReader fr=null;        try        {            fr = new FileReader("text");        }        catch (FileNotFoundException fe)        {            System.out.println("File not found");        }         // read from FileReader till the end of file        while ((ch=fr.read())!=-1)            System.out.print((char)ch);         // close the file        fr.close();    }}
This article is contributed by Nishant Sharma. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
SandySharma
shubhamvora05
java-file-handling
Java-I/O
Java-Library
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
How to iterate any Map in Java
Interfaces in Java
HashMap in Java with Examples
ArrayList in Java
Stream In Java
Collections in Java
Singleton Class in Java
Multidimensional Arrays in Java
Set in Java