- Read & Write file in java using InputStreamReader & OutputStreamWriter class.
- We will write contents to a file using OutputStreamWriter class in java.
- We will read contents from file using InputStreamReader class in java.
- InputStreamReader and OutputStreamWriter is character based reader and writer.
1. InputStreamReader class:
- InputStreamReader converts bytes to characters using specified charset.
- Read methods InputStreamReader class are as follows:
No. | Method prototype | Description |
---|---|---|
1 | int read() | Reads a single character. |
2 | int read(char[] cbuf, int offset, int length) | Reads characters into a portion of an array. |

2. OutputStreamWriter class:
- OutputStreamWriter converts characters to bytes using specified charset.
- Write methods of OutputStreamWriter class are as follows:
No. | Method prototype | Description |
---|---|---|
1 | void write(char[] cbuf, int off, int len) | Writes a portion of an array of characters. |
2 | void write(int c) | Writes a single character. |
3 | void write(String str, int off, int len) | Writes a portion of a string. |

OutputStreamWriter will act as character to byte encoder and InputStreamReader will act as byte to character decoder.

3. Read & write file in java (InputStreamReader/OutputStreamWriter)
package org.learn.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class SteamReaderWriter { public static void main(String[] args) throws IOException { //Write contents to file using input stream writer writeUsingStreamWriter(); //Read contents from file using input stream reader readUsingStreamReader(); } private static void writeUsingStreamWriter() throws IOException { String newLine = System.getProperty("line.separator"); try (FileOutputStream fileStream = new FileOutputStream( new File("sampleFile.txt")); OutputStreamWriter writer = new OutputStreamWriter(fileStream)) { System.out.println("1. Start Writing file using OutputStreamWriter:"); writer.write("Soccer"); System.out.println("Written \"Soccer\" to a file"); writer.write(newLine); writer.write("Tennis"); System.out.println("Written \"Tennis\" to a file"); writer.write(newLine); writer.write("Badminton"); System.out.println("Written \"Badminton\" to a file"); writer.write(newLine); writer.write("Hockey"); System.out.println("Written \"Hockey\" to a file"); writer.write(newLine); System.out.println("2. End Writing file using OutputStreamWriter"); System.out.println(); } } private static void readUsingStreamReader() throws IOException { try (FileInputStream fileStream = new FileInputStream( new File("sampleFile.txt")); InputStreamReader reader = new InputStreamReader(fileStream)) { System.out.println("3. Start Reading the file using InputStreamReader:"); int character; while ((character = reader.read()) != -1) { System.out.print((char) character); } System.out.println("4. End Reading the file using InputStreamReader"); } } }
The content of sampleFile.txt is as follows:

4. O/P:Read & write file in java – InputStreamReader & OutputStreamWriter
1. Start Writing file using OutputStreamWriter: Written "Soccer" to a file Written "Tennis" to a file Written "Badminton" to a file Written "Hockey" to a file 2. End Writing file using OutputStreamWriter 3. Start Reading the file using InputStreamReader: Soccer Tennis Badminton Hockey 4. End Reading the file using InputStreamReader