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.
