Reading and writing binary files (images, audio, etc.)
try(FileOutputStream fos = new FileOutputStream("image_copy.png")) {
fos.write(65);
System.out.println("Byte written successfully!");
}
✍️ Character Stream
FileReader, FileWriter
Reading/writing text files (Unicode support)
try(FileReader fr = new FileReader("message.txt")) {
int ch;
while((ch = fr.read()) != -1) {
System.out.print((char)ch);
}
}
⚡ Buffered Stream
BufferedReader, BufferedWriter
Efficient reading/writing using buffer memory
try(BufferedWriter bw = new BufferedWriter(new FileWriter("notes.txt"))) {
bw.write("Java I/O is powerful and flexible.");
bw.newLine();
bw.write("Buffered streams make it faster!");
}
💾 Data Stream
DataInputStream, DataOutputStream
Storing primitive data types in binary format
try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.bin"))) {
dos.writeInt(2025);
dos.writeUTF("Java");
dos.writeDouble(99.5);
}
🧩 Object Stream
ObjectInputStream, ObjectOutputStream
Saving and restoring entire Java objects
class Person implements Serializable {
String name; int age;
Person(String n, int a){ name=n; age=a; }
}
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
oos.writeObject(new Person("Adeel", 22));
}
🖥️ Standard Stream
System.in, System.out, System.err
Console-based I/O operations
Scanner input = new Scanner(System.in);
System.out.print("Enter number: ");
int n = input.nextInt();
System.out.println("Square: " + (n*n));
🔒 Serialization
ObjectOutputStream, ObjectInputStream
Persisting object state to disk and restoring it
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person p = (Person) ois.readObject();
System.out.println(p.name + " - " + p.age);
}