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 TypeDescription
Byte StreamsRead/write binary data (images, files, audio)
Character StreamsRead/write text data (characters, strings)

2️⃣ Based on Direction

DirectionClass/Interface
InputInputStream, Reader
OutputOutputStream, 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 TypeClass ExampleUse Case
Byte InputFileInputStreamRead binary files
Byte OutputFileOutputStreamWrite binary files
Character InputFileReaderRead text files
Character OutputFileWriterWrite text files
BufferedBufferedReader/BufferedWriterEfficient text I/O
Data StreamsDataInputStream/DataOutputStreamRead/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...