Java Write Files

Learn how to write data to files in Java

✍️ Writing Files in Java

Java offers multiple ways to write data to files using FileWriter, BufferedWriter, and PrintWriter classes. You can write text, append content, and handle different data types with proper resource management.


// Write text to a file
import java.io.FileWriter;
import java.io.IOException;

public class WriteFile {
    public static void main(String[] args) {
        try {
            FileWriter writer = new FileWriter("output.txt");
            writer.write("Hello, World!");
            writer.close();
            System.out.println("Successfully wrote to file.");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
                                    

Output:

Successfully wrote to file.

File Writing Classes

📝

FileWriter

Simple text file writing

FileWriter writer = new FileWriter("file.txt");

BufferedWriter

Efficient buffered writing

BufferedWriter buffer = new BufferedWriter(writer);
🖨️

PrintWriter

Formatted text output

PrintWriter print = new PrintWriter("file.txt");

Append Mode

Add content to existing files

new FileWriter("file.txt", true);

🔹 Basic File Writing

Write simple text to a file using FileWriter:

import java.io.FileWriter;
import java.io.IOException;

public class BasicWriting {
    public static void main(String[] args) {
        try {
            // Create FileWriter object
            FileWriter writer = new FileWriter("mydata.txt");
            
            // Write content to file
            writer.write("Welcome to Java file writing!\n");
            writer.write("This is line 2.\n");
            writer.write("Java makes file handling easy.");
            
            // Close the writer
            writer.close();
            
            System.out.println("Data written to file successfully!");
            
        } catch (IOException e) {
            System.out.println("An error occurred: " + e.getMessage());
        }
    }
}

Output:

Data written to file successfully!

File content: Welcome to Java file writing!
This is line 2.
Java makes file handling easy.

🔹 Appending to Files

Add new content to existing files without overwriting:

import java.io.FileWriter;
import java.io.IOException;

public class AppendToFile {
    public static void main(String[] args) {
        try {
            // Create FileWriter in append mode (true parameter)
            FileWriter writer = new FileWriter("log.txt", true);
            
            // Append new content
            writer.write("\n--- New Entry ---\n");
            writer.write("Date: 2024-01-15\n");
            writer.write("Status: File append successful\n");
            
            writer.close();
            System.out.println("Content appended to file!");
            
        } catch (IOException e) {
            System.out.println("Error appending to file: " + e.getMessage());
        }
    }
}

Output:

Content appended to file!

🔹 Using BufferedWriter for Better Performance

BufferedWriter is more efficient for writing large amounts of data:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriting {
    public static void main(String[] args) {
        try {
            FileWriter fileWriter = new FileWriter("buffered.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            
            // Write multiple lines efficiently
            bufferedWriter.write("Line 1: Using BufferedWriter");
            bufferedWriter.newLine(); // Add new line
            bufferedWriter.write("Line 2: Better performance");
            bufferedWriter.newLine();
            bufferedWriter.write("Line 3: For large files");
            
            // Important: Close BufferedWriter (also closes FileWriter)
            bufferedWriter.close();
            
            System.out.println("Buffered writing completed!");
            
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Output:

Buffered writing completed!

🔹 Using PrintWriter for Formatted Output

PrintWriter provides convenient methods for formatted writing:

import java.io.PrintWriter;
import java.io.IOException;

public class FormattedWriting {
    public static void main(String[] args) {
        try {
            PrintWriter writer = new PrintWriter("formatted.txt");
            
            // Write different data types
            writer.println("Student Report");
            writer.println("================");
            writer.printf("Name: %s\n", "John Doe");
            writer.printf("Age: %d\n", 20);
            writer.printf("Grade: %.2f\n", 85.75);
            writer.println("Status: Pass");
            
            writer.close();
            System.out.println("Formatted data written successfully!");
            
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Output:

Formatted data written successfully!

🔹 Try-with-Resources (Recommended)

Automatically close resources using try-with-resources:

import java.io.FileWriter;
import java.io.IOException;

public class SafeWriting {
    public static void main(String[] args) {
        // Try-with-resources automatically closes the writer
        try (FileWriter writer = new FileWriter("safe.txt")) {
            
            writer.write("This is safe file writing.\n");
            writer.write("Resources are automatically closed.\n");
            writer.write("No need to call close() manually!");
            
            System.out.println("File written safely!");
            
        } catch (IOException e) {
            System.out.println("Error occurred: " + e.getMessage());
        }
        // FileWriter is automatically closed here
    }
}

Output:

File written safely!

🧠 Test Your Knowledge

Which parameter enables append mode in FileWriter?