What is InputStream & OutputStream? Why and when do we use them?
InputStream is a Java class that provides methods for reading bytes from a binary source, such as a file or a network socket.
On the other hand, OutputStream is a Java class that provides methods for writing bytes to a binary target, such as a file or a network socket.
Finally, if you need to read data, you use InputStream
; if you want to write data, you use OutputStream
.
Stream decoration: the art of wrapping
Buffer for efficiency
BufferedInputStream
and BufferedOutputStream
are best friends with base streams, reducing the number of I/O operations like real wingmen.
Primitive data types and strings
Push DataInputStream
or DataOutputStream
into battle when it's time to handle primitives and strings.
Crafting with objects
For serializable objects, call up ObjectOutputStream
and ObjectInputStream
.
Catering for different data sources
File operations
FileInputStream
and FileOutputStream
is for file operations—the real show stoppers.
Character Stream I/O
FileReader
and FileWriter
— the charmers for characters instead of bytes.
Custom streams
For those unique situations, custom stream for unique data format.
Special formats
Formatting is everything, ZipInputStream
and ZipOutputStream
are all about special formats.
Best practices
Choose the right tool
Pick the most suitable stream type based on the task at hand. Readability and speed do matter!
Not all at once
Marco Polo of data — Discovering data in chunks is better than uncovering all at once, especially for large files.
Memory management
Don't forget to close your streams. Orphans are never good news, even in the world of streams.
Was this article helpful?