ByteArrayOutputStream
is a memory-based stream that collects output data in an internal byte array. It’s useful when you want to build a byte array dynamically (e.g., generating PDF content, processing images, etc.).It automatically resizes its internal buffer as data is written.
Commonly Used Constructors and Methods


Simple Program – Writing and Printing Byte Array
LotusJavaPrince wants to store the message "Mahesh is brilliant!"
in memory using ByteArrayOutputStream
and print it as a string.
import java.io.ByteArrayOutputStream; import java.io.IOException; public class SimpleByteArrayOutputStream { public static void main(String[] args) { String message = "Mahesh is brilliant!"; try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { baos.write(message.getBytes()); // Convert to byte array and print as string String result = baos.toString(); System.out.println("Output Stream Result: " + result); } catch (IOException e) { e.printStackTrace(); } } }
Output:
Output Stream Result: Mahesh is brilliant!
Problem Statement:
Mahesh is building a message collector system where various components write logs (e.g., System
, Auth
, Error
) to a common in-memory stream. Once collected, LotusJavaPrince will convert them into one report string using ByteArrayOutputStream
.
import java.io.ByteArrayOutputStream; import java.io.IOException; public class LogCollector { public static void main(String[] args) { try (ByteArrayOutputStream logStream = new ByteArrayOutputStream()) { // Component 1: System log String systemLog = "System Started Successfully.\n"; logStream.write(systemLog.getBytes()); // Component 2: Authentication log String authLog = "User Mahesh logged in.\n"; logStream.write(authLog.getBytes()); // Component 3: Error log String errorLog = "Warning: Low Disk Space.\n"; logStream.write(errorLog.getBytes()); // Final report generation String finalReport = logStream.toString(); System.out.println("------ System Log Report ------"); System.out.println(finalReport); } catch (IOException e) { e.printStackTrace(); } } }
Output:
------ System Log Report ------
System Started Successfully.
User Mahesh logged in.
Warning: Low Disk Space.
The ByteArrayOutputStream
class is a memory-based output stream that plays a vital role in modern Java applications where dynamic and flexible byte data storage is needed. Unlike file or network-based output streams, ByteArrayOutputStream
stores data in memory, making it fast, reusable, and ideal for temporary or intermediate output handling.