Java ByteArrayInputStream (Dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang Java ByteArrayInputStream dan metodenya dengan bantuan contoh.

The ByteArrayInputStreamkelas dari java.iopaket dapat digunakan untuk membaca array input data (dalam byte).

Ini memperluas InputStreamkelas abstrak.

Catatan : Dalam ByteArrayInputStream, aliran input dibuat menggunakan array byte. Ini termasuk array internal untuk menyimpan data dari array byte tertentu.

Buat ByteArrayInputStream

Untuk membuat aliran input array byte, kita harus mengimpor java.io.ByteArrayInputStreampaket terlebih dahulu. Setelah kami mengimpor paket, berikut adalah cara kami membuat aliran input.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Di sini, kami telah membuat aliran input yang membaca seluruh data dari arrarray. Namun, kita juga dapat membuat aliran input yang hanya membaca beberapa data dari larik.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Di sini aliran input membaca jumlah byte yang sama dengan panjang dari array mulai dari posisi awal.

Metode ByteArrayInputStream

The ByteArrayInputStreamkelas menyediakan implementasi untuk metode yang berbeda hadir di InputStreamkelas.

read () Metode

  • read() - membaca single byte dari array yang ada di input stream
  • read(byte() array) - membaca byte dari aliran input dan menyimpannya dalam array yang ditentukan
  • read(byte() array, int start, int length) - membaca jumlah byte yang sama dengan panjang dari aliran dan menyimpannya dalam array yang ditentukan mulai dari posisi awal

Contoh: ByteArrayInputStream untuk membaca data

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Keluaran

 Byte yang dibaca dari aliran input: 1, 2, 3, 4, 

Dalam contoh di atas, kami telah membuat aliran input array byte bernama input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Di sini, aliran input mencakup semua data dari larik yang ditentukan. Untuk membaca data dari aliran input, kami telah menggunakan read()metode ini.

tersedia () Metode

Untuk mendapatkan jumlah byte yang tersedia di input stream, kita bisa menggunakan available()metode ini. Sebagai contoh,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Keluaran

 Byte yang tersedia di awal: 4 Byte yang tersedia di akhir: 2 

Dalam contoh di atas,

  1. Kami telah menggunakan available()metode ini untuk memeriksa jumlah byte yang tersedia di aliran input.
  2. Kami kemudian menggunakan read()metode ini 2 kali untuk membaca 2 byte dari aliran input.
  3. Sekarang, setelah membaca 2 byte, kami telah memeriksa byte yang tersedia. Kali ini byte yang tersedia berkurang 2.

lewati () Metode

Untuk membuang dan melewatkan jumlah byte yang ditentukan, kita dapat menggunakan skip()metode ini. Sebagai contoh,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Keluaran

 Aliran input setelah melewati 2 byte: 3, 4, 

Dalam contoh di atas, kami telah menggunakan metode skip () untuk melewati 2 byte data dari aliran input. Oleh karena itu 1 dan 2 tidak dibaca dari aliran input.

close () Metode

Untuk menutup aliran input, kita bisa menggunakan close()metode.

Namun, close()metode tersebut tidak berpengaruh di ByteArrayInputStreamkelas. Kita dapat menggunakan metode kelas ini bahkan setelah close()metode tersebut dipanggil.

Metode Lain Dari ByteArrayInputStream

Metode Deskripsi
finalize() memastikan bahwa close()metode tersebut dipanggil
mark() menandai posisi dalam aliran input yang datanya telah dibaca
reset() mengembalikan kontrol ke titik dalam aliran input tempat tanda ditetapkan
markSupported() memeriksa apakah aliran input mendukung mark()danreset()

Untuk mempelajari lebih lanjut, kunjungi Java ByteArrayInputStream (dokumentasi resmi Java).

Artikel yang menarik...