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
| Class | Purpose |
|---|---|
File | Represent file/directory |
FileWriter | Write characters to file |
FileReader | Read characters from file |
BufferedReader | Read file efficiently (buffered) |
BufferedWriter | Write file efficiently (buffered) |
Scanner | Read formatted input from file |
PrintWriter | Write formatted output to file |
Exam Tips
Remember:
- Import
java.io.*for file operations - Always handle
IOException - Close files after use:
writer.close(),reader.close() - Use try-with-resources for automatic closing
- FileWriter - write to file
- FileReader + BufferedReader - read from file
- Scanner - alternative for reading files
- Check file exists:
file.exists() - Create file:
file.createNewFile() - 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?