File Input and Output

Introduction

File I/O allows Java programs to read from and write to files stored on disk. Java provides several classes in java.io package for file operations.


File Class

Creating File Object:

import java.io.File;

File file = new File("data.txt");
File file2 = new File("C:\\Users\\Desktop\\test.txt");

Useful File Methods:

File file = new File("test.txt");

// Check if file exists
boolean exists = file.exists();  // true/false

// Create new file
boolean created = file.createNewFile();  // Returns true if created

// Delete file
boolean deleted = file.delete();  // Returns true if deleted

// Get file name
String name = file.getName();  // "test.txt"

// Get file path
String path = file.getPath();  // "test.txt" or full path

// Check if file or directory
boolean isFile = file.isFile();
boolean isDir = file.isDirectory();

// Get file size (bytes)
long size = file.length();

Writing to File

Using FileWriter:

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\n");
            writer.write("This is a file.");
            writer.close();
            System.out.println("File written successfully");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Append to File:

// Pass true to append instead of overwrite
FileWriter writer = new FileWriter("output.txt", true);
writer.write("New line\n");
writer.close();

Reading from File

Using FileReader with BufferedReader:

import java.io.*;

public class ReadFile {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("input.txt");
            BufferedReader br = new BufferedReader(fr);

            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            br.close();
            fr.close();
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Using Scanner:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFileScanner {
    public static void main(String[] args) {
        try {
            File file = new File("input.txt");
            Scanner sc = new Scanner(file);

            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                System.out.println(line);
            }

            sc.close();
        } catch (FileNotFoundException e) {
            System.out.println("File not found");
        }
    }
}

Complete Example: Copy File

import java.io.*;

public class CopyFile {
    public static void main(String[] args) {
        try {
            // Read from source
            FileReader fr = new FileReader("source.txt");
            BufferedReader br = new BufferedReader(fr);

            // Write to destination
            FileWriter fw = new FileWriter("destination.txt");

            String line;
            while ((line = br.readLine()) != null) {
                fw.write(line + "\n");
            }

            br.close();
            fw.close();

            System.out.println("File copied successfully");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Exception Handling

Must Handle IOException:

// Method 1: try-catch
try {
    FileWriter writer = new FileWriter("file.txt");
    writer.write("Hello");
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
}

// Method 2: throws declaration
public static void main(String[] args) throws IOException {
    FileWriter writer = new FileWriter("file.txt");
    writer.write("Hello");
    writer.close();
}

Try-with-Resources (Automatic Close)

import java.io.*;

public class AutoClose {
    public static void main(String[] args) {
        // Automatically closes resources
        try (FileWriter writer = new FileWriter("output.txt")) {
            writer.write("Hello World");
            System.out.println("File written");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
        // writer.close() called automatically
    }
}

Common File Operations

1. Check if File Exists:

File file = new File("test.txt");
if (file.exists()) {
    System.out.println("File exists");
} else {
    System.out.println("File not found");
}

2. Create New File:

import java.io.*;

File file = new File("newfile.txt");
try {
    if (file.createNewFile()) {
        System.out.println("File created");
    } else {
        System.out.println("File already exists");
    }
} catch (IOException e) {
    e.printStackTrace();
}

3. Delete File:

File file = new File("test.txt");
if (file.delete()) {
    System.out.println("File deleted");
} else {
    System.out.println("Failed to delete");
}

4. List Files in Directory:

File dir = new File("myFolder");
String[] files = dir.list();

for (String file : files) {
    System.out.println(file);
}

Quick Reference

Write to File:

FileWriter writer = new FileWriter("file.txt");
writer.write("Content");
writer.close();

Read from File:

BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line = reader.readLine();
reader.close();

Using Scanner:

Scanner sc = new Scanner(new File("file.txt"));
while (sc.hasNextLine()) {
    System.out.println(sc.nextLine());
}
sc.close();

Important Classes

ClassPurpose
FileRepresent file/directory
FileWriterWrite characters to file
FileReaderRead characters from file
BufferedReaderRead file efficiently (buffered)
BufferedWriterWrite file efficiently (buffered)
ScannerRead formatted input from file
PrintWriterWrite formatted output to file

Exam Tips

Remember:

  1. Import java.io.* for file operations
  2. Always handle IOException
  3. Close files after use: writer.close(), reader.close()
  4. Use try-with-resources for automatic closing
  5. FileWriter - write to file
  6. FileReader + BufferedReader - read from file
  7. Scanner - alternative for reading files
  8. Check file exists: file.exists()
  9. Create file: file.createNewFile()
  10. Delete file: file.delete()

Common Questions:

  • How to read/write files in Java?
  • What is File class?
  • Difference between FileWriter and FileReader?
  • Why use BufferedReader?
  • How to handle file exceptions?
  • What is try-with-resources?