Menguasai Java ByteArrayOutputStream: Metode, Penggunaan, dan Contoh Praktis
Mastering Java ByteArrayOutputStream
Tutorial ini menjelajahi ByteArrayOutputStream Java, metode utamanya, dan contoh praktis untuk membantu Anda menulis output level byte secara efisien.
Kelas ByteArrayOutputStream dalam paket java.io memungkinkan Anda menulis data ke dalam array byte internal yang secara otomatis bertambah sesuai kebutuhan. Ia memperluas kelas abstrak OutputStream, menjadikannya alat serbaguna untuk manipulasi byte di memori.

Catatan: Kelas ini memelihara buffer internal yang diperluas sesuai kebutuhan, jadi biasanya Anda tidak perlu menentukan kapasitasnya sebelumnya kecuali Anda mengetahui ukuran yang dibutuhkan.
Membuat ByteArrayOutputStream
Untuk membuat ByteArrayOutputStream, impor java.io.ByteArrayOutputStream dan buat instance. Secara default, buffer dimulai pada 32 byte:
// Default size ByteArrayOutputStream out = new ByteArrayOutputStream();
Anda juga dapat menentukan kapasitas awal jika Anda mengasumsikan payload yang besar:
// Custom size ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
Parameter size menetapkan panjang buffer awal dalam byte.
Metode Utama ByteArrayOutputStream
Sebagai implementasi OutputStream, ByteArrayOutputStream menawarkan beberapa metode penting:
Metode write()
write(int b) – Menulis satu byte ke aliran. write(byte[] b) – Menulis seluruh array byte. write(byte[] b, int off, int len) – Menulis len byte dari array mulai dari indeks off. writeTo(ByteArrayOutputStream out1) – Menyalin buffer saat ini ke ByteArrayOutputStream lain.
Contoh: Menulis Data ke ByteArrayOutputStream
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is a line of text inside the string."; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] array = data.getBytes(); out.write(array); String streamData = out.toString(); System.out.println("Output stream: " + streamData); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
Output
Output stream: This is a line of text inside the string.
Dalam contoh ini, write() mentransfer array byte ke aliran, dan toString() mengambil data yang terkumpul sebagai teks.
Mengakses Data dari ByteArrayOutputStream
toByteArray() – Mengembalikan salinan array byte internal. toString() – Mengonversi buffer ke String menggunakan charset default platform.
Di bawah menunjukkan kedua metode tersebut:
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is data."; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); out.write(data.getBytes()); byte[] byteData = out.toByteArray(); System.out.print("Data using toByteArray(): "); for (int i = 0; i < byteData.length; i++) { System.out.print((char) byteData[i]); } String stringData = out.toString(); System.out.println("\nData using toString(): " + stringData); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
Output
Data using toByteArray(): This is data. Data using toString(): This is data.
Di sini kita mengubah setiap byte menjadi karakter untuk tampilan, mengilustrasikan bagaimana array dasar memetakan ke teks.
close() Method
Memanggil close() pada ByteArrayOutputStream tidak memiliki efek buruk; aliran tetap dapat digunakan setelahnya. Perilaku ini selaras dengan desainnya untuk buffer di memori di mana tidak ada sumber daya eksternal yang perlu dilepaskan.
Metode Tambahan
| Method | Description |
size() | Mengembalikan jumlah byte yang ditulis sejauh ini. |
flush() | Mengatur ulang buffer internal, secara efektif membersihkan aliran. |
Untuk penggunaan yang lebih lanjutan, konsultasikan dokumentasi resmi Java SE.
Java ByteArrayOutputStream (official documentation)