Java ByteArrayInputStream: Panduan Praktis Membaca Array Byte
Java ByteArrayInputStream
Artikel ini menjelaskan cara menggunakan ByteArrayInputStream Java untuk membaca data dari array byte, mencakup konstruktor, metode kunci, dan contoh praktis.
Apa itu ByteArrayInputStream?
Kelas ByteArrayInputStream, yang merupakan bagian dari paket java.io, mengimplementasikan InputStream dan memungkinkan Anda memperlakukan array byte sebagai aliran masukan. Secara internal, ia menyimpan salinan array yang disediakan, memungkinkan akses acak dan pembacaan yang efisien.

Catatan: Aliran membaca dari array itu sendiri, bukan dari sumber eksternal, sehingga semua operasi berjalan di memori.
Membuat ByteArrayInputStream
Impor java.io.ByteArrayInputStream dan buat instance. Anda dapat membaca seluruh array atau irisan.
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);
Konstruktor kedua membaca length byte mulai dari indeks start.
Metode Inti
read()
int read() – membaca byte berikutnya, atau -1 jika akhir tercapai. int read(byte[] b) – mengisi array yang disediakan dengan data. int read(byte[] b, int off, int len) – membaca hingga len byte ke dalam b mulai dari offset off.
Contoh: Membaca Byte
import java.io.ByteArrayInputStream; public class Main { public static void main(String[] args) { byte[] array = {1, 2, 3, 4}; try (ByteArrayInputStream input = new ByteArrayInputStream(array)) { System.out.print("Bytes read: "); int value; while ((value = input.read()) != -1) { System.out.print(value + ", "); } System.out.println(); } catch (Exception e) { e.printStackTrace(); } } }
Output
Bytes read: 1, 2, 3, 4,
available()
Mengembalikan jumlah byte yang masih tersedia tanpa pemblokiran.
import java.io.ByteArrayInputStream; public class Main { public static void main(String[] args) { byte[] array = {1, 2, 3, 4}; try (ByteArrayInputStream input = new ByteArrayInputStream(array)) { System.out.println("Initially: " + input.available()); input.read(); input.read(); System.out.println("After 2 reads: " + input.available()); } catch (Exception e) { e.printStackTrace(); } } }
Output
Initially: 4 After 2 reads: 2
skip()
Maju posisi aliran dengan sejumlah byte yang diminta.
import java.io.ByteArrayInputStream; public class Main { public static void main(String[] args) { byte[] array = {1, 2, 3, 4}; try (ByteArrayInputStream input = new ByteArrayInputStream(array)) { input.skip(2); System.out.print("After skip: "); int value; while ((value = input.read()) != -1) { System.out.print(value + ", "); } } catch (Exception e) { e.printStackTrace(); } } }
Output
After skip: 3, 4,
close()
Menutup ByteArrayInputStream adalah no-op; aliran masih dapat digunakan setelahnya. Metode ini hadir hanya untuk kompatibilitas API.
Metode Lainnya yang Berguna
| Method | Description |
mark(int readlimit) | Menandai posisi saat ini. |
reset() | Kembali ke posisi terakhir yang ditandai. |
markSupported() | Selalu mengembalikan true. |
finalize() | Memastikan sumber daya dilepaskan (tidak ada efek untuk kelas ini). |
Untuk API lengkap, lihat dokumentasi resmi Java.