Java I/O Fundamentals
1. Introduction
The Java I/O (Input/Output) API provides a standard way to read and write data to files, network connections, and other resources. It includes classes and interfaces for handling binary and character data.
2. Java I/O Overview
Java I/O consists of two main categories:
- Byte Streams: Handle raw binary data.
- Character Streams: Handle character data (text).
Java I/O is primarily represented by the java.io
package.
3. Streams
Streams in Java are used to read and write data. They can be categorized as:
3.1 Byte Streams
Byte streams use InputStream
and OutputStream
as their base classes.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
fos.write(65); // Writes 'A'
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.2 Character Streams
Character streams use Reader
and Writer
as their base classes.
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamExample {
public static void main(String[] args) {
try (FileWriter fw = new FileWriter("example.txt")) {
fw.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. File Handling
Java provides the File
class in the java.io
package for file manipulation. It allows checking file properties and performing operations like creating, deleting, or renaming files.
import java.io.File;
import java.io.IOException;
public class FileHandlingExample {
public static void main(String[] args) {
File file = new File("example.txt");
try {
if (file.createNewFile()) {
System.out.println("File created: " + file.getName());
} else {
System.out.println("File already exists.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. Best Practices
Here are some best practices for Java I/O:
- Always close your streams using
try-with-resources
to avoid memory leaks. - Use buffered streams for better performance when reading or writing large amounts of data.
- Handle exceptions properly to avoid application crashes.
6. FAQ
What is the difference between byte streams and character streams?
Byte streams handle raw binary data, while character streams handle character data (text).
How can I read a file in Java?
You can use the FileReader
class to read character files or FileInputStream
for binary files.
What is the best way to handle exceptions in Java I/O?
Use try-catch blocks to handle exceptions and ensure that resources are closed properly using try-with-resources.