π Introduction
Almost every real-world Java application needs to interact with files β reading data, writing logs, or saving configurations.
In this lesson, youβll learn how to handle files using:
File
FileReader
&BufferedReader
FileWriter
&BufferedWriter
Scanner
- and some best practices!
Letβs dive in! πββοΈ
π Working with Files in Java
Java provides the java.io
and java.nio
packages for file operations.
π Create or Check a File
import java.io.File;
public class Main {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.exists()) {
System.out.println("File exists.");
} else {
System.out.println("File does not exist.");
}
}
}
βοΈ Writing to a File β FileWriter
import java.io.FileWriter;
import java.io.IOException;
public class WriteExample {
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("data.txt");
writer.write("Hello, file world!");
writer.close();
System.out.println("Written successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
π Reading from a File β FileReader
+ BufferedReader
import java.io.*;
public class ReadExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
π Reading with Scanner
import java.io.File;
import java.util.Scanner;
public class ScannerRead {
public static void main(String[] args) {
try {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
π§½ Writing with BufferedWriter
(More Efficient)
import java.io.*;
public class BufferedWriteExample {
public static void main(String[] args) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("notes.txt"));
writer.write("This is written using BufferedWriter.");
writer.newLine();
writer.write("Buffered writing is fast!");
writer.close();
System.out.println("Buffered write successful.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
π§ Best Practices
- Always close streams using
finally
or try-with-resources. - Check if the file exists before reading.
- Use
BufferedReader
/BufferedWriter
for large files. - Avoid hardcoding file paths β use relative paths or config files.
π Try-With-Resources β Auto Closing
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
β Cleaner and safer!
π§ͺ Mini Challenge
Try creating a file named users.txt
and write 3 user names into it. Then read and print each line from that file.
β What You Learned
- How to read from and write to text files
- Use of
FileReader
,FileWriter
,BufferedReader
,BufferedWriter
, andScanner
- Best practices to avoid resource leaks