Java FileReader & FileWriter
In this page:
FileReader reader = new FileReader("file_name");
FileWriter writer = new FileWriter("file_name");
writer.write("text");
writer.close();
Writing Characters with FileWriter
FileWriter writes character data to a file, automatically converting Java's internal char/String data into the platform's default text encoding as it writes.
Example: Writing Characters with FileWriter
// Import java.io.FileWriter so it can be used by its short name
import java.io.FileWriter;
// Import java.io.IOException so it can be used by its short name
import java.io.IOException;
// Define the class Main
public class Main {
// Program entry point: the JVM starts running here
public static void main(String[] args) throws IOException {
// Create a new FileWriter object and store it in writer
FileWriter writer = new FileWriter("notes.txt");
writer.write("Hello");
writer.close();
// Print a line to the console
System.out.println("Written");
}
}
Login to try C/C++/Java/PHP code in the editor
Reading Characters with FileReader
FileReader reads character data back from a file the same way, converting bytes on disk into Java char values as it reads — pairing naturally with FileWriter for round-tripping text.
Example: Reading Characters with FileReader
// Import java.io.FileWriter so it can be used by its short name
import java.io.FileWriter;
// Import java.io.FileReader so it can be used by its short name
import java.io.FileReader;
import java.io.IOException;
// Define the class Main
public class Main {
// Program entry point: the JVM starts running here
public static void main(String[] args) throws IOException {
// Create a new FileWriter object and store it in writer
FileWriter writer = new FileWriter("notes.txt");
writer.write("Hi");
writer.close();
// Create a new FileReader object and store it in reader
FileReader reader = new FileReader("notes.txt");
int c;
// Repeat while (c = reader.read()) != -1 is true
while ((c = reader.read()) != -1) {
// Print to the console without a newline
System.out.print((char) c);
}
reader.close();
}
}
Login to try C/C++/Java/PHP code in the editor
Try-With-Resources cleanup
Using try-with-resources (try (FileWriter fw = new FileWriter(...)) {...}) guarantees the file is closed automatically when the block exits, even if an exception is thrown partway through.
Example: Try-With-Resources cleanup
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
try (FileWriter writer = new FileWriter("notes.txt")) { // auto-closed on exit
writer.write("Hello");
}
System.out.println("Closed automatically");
}
}
Login to try C/C++/Java/PHP code in the editor
File Handling Safety
Always wrap file operations in proper exception handling and resource closing — an unclosed file handle can leak resources, and a program that crashes mid-write can leave a file in a corrupted, half-written state.
Example: File Handling Safety
// Import java.io.FileWriter so it can be used by its short name
import java.io.FileWriter;
// Import java.io.IOException so it can be used by its short name
import java.io.IOException;
// Define the class Main
public class Main {
// Program entry point: the JVM starts running here
public static void main(String[] args) {
// Try code that might throw an exception
try (FileWriter writer = new FileWriter("notes.txt")) {
writer.write("Hello");
// Handle IOException if it was thrown
} catch (IOException e) {
// Print a line to the console
System.out.println("Handled safely: " + e.getMessage());
}
}
}
Login to try C/C++/Java/PHP code in the editor
Dynamic Text Manipulation
Because FileWriter writes character-by-character by default, combining it with a loop that builds and rewrites strings is a natural way to transform a file's text content on the fly.
Example: Dynamic Text Manipulation
// Import java.io.FileWriter so it can be used by its short name
import java.io.FileWriter;
// Import java.io.IOException so it can be used by its short name
import java.io.IOException;
// Define the class Main
public class Main {
// Program entry point: the JVM starts running here
public static void main(String[] args) throws IOException {
// Create a new StringBuilder object and store it in content
StringBuilder content = new StringBuilder();
// Loop: repeat while the condition holds
for (int i = 1; i <= 3; i++) {
content.append("Line ").append(i).append("\n");
}
// Try code that might throw an exception
try (FileWriter writer = new FileWriter("notes.txt")) {
writer.write(content.toString());
}
// Print a line to the console
System.out.println("Written dynamically");
}
}
Login to try C/C++/Java/PHP code in the editor
- Using
FileWriterwithout append mode, which overwrites existing text. - Forgetting to close the writer, so the text may not be saved.
- Using
FileReaderfor binary files, which corrupts the data.
Chapter Quiz — Complete all 9 topics to unlock
0/9 topics done
Complete these topics first: