Java I/O Streams

💻 Java I/O Streams

In Java, I/O (Input/Output) Streams are used to read data from a source or write data to a destination.

  • InputStream → Read data (input)

  • OutputStream → Write data (output)

Streams handle byte-level or character-level data.


🧩 Types of Streams

1️⃣ Based on Data Type

Stream Type Description
Byte Streams Read/write binary data (images, files, audio)
Character Streams Read/write text data (characters, strings)

2️⃣ Based on Direction

Direction Class/Interface
Input InputStream, Reader
Output OutputStream, Writer

✅ 1. Byte Streams (Binary Data)

  • InputStream → Read bytes

  • OutputStream → Write bytes

Example: Reading a File Using FileInputStream


 

Example: Writing a File Using FileOutputStream


 


✅ 2. Character Streams (Text Data)

  • Reader → Read characters

  • Writer → Write characters

Example: Reading Using FileReader


 

Example: Writing Using FileWriter


 


✅ 3. Buffered Streams (Efficient I/O)

  • Wrap streams to buffer data → improves performance

  • Classes: BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream

Example: BufferedReader


 


✅ 4. Data Streams (Read/Write Primitive Data)

  • DataInputStream → Read primitive types (int, double, etc.)

  • DataOutputStream → Write primitive types


 


🧠 Summary Table

Stream Type Class Example Use Case
Byte Input FileInputStream Read binary files
Byte Output FileOutputStream Write binary files
Character Input FileReader Read text files
Character Output FileWriter Write text files
Buffered BufferedReader/BufferedWriter Efficient text I/O
Data Streams DataInputStream/DataOutputStream Read/write primitives

Best Practices

  1. Always close streams (use try-with-resources).

  2. Use Buffered streams for better performance with large files.

  3. Choose byte streams for binary data and character streams for text.

You may also like...