Java ByteArrayInputStream (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai Java ByteArrayInputStream dan kaedahnya dengan bantuan contoh.

The ByteArrayInputStreamgolongan orang java.iopakej boleh digunakan untuk membaca pelbagai data input (dalam bait).

Ia meluaskan InputStreamkelas abstrak.

Catatan : Di ByteArrayInputStream, aliran input dibuat menggunakan susunan bait. Ia merangkumi susunan dalaman untuk menyimpan data dari susunan bait tertentu.

Buat ByteArrayInputStream

Untuk membuat aliran input array byte, kita mesti mengimport java.io.ByteArrayInputStreampakej terlebih dahulu. Sebaik sahaja kami mengimport pakej, berikut adalah bagaimana kita dapat 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 keseluruhan data dari arrarray. Namun, kami juga dapat membuat aliran input yang hanya membaca beberapa data dari array.

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

Di sini aliran input membaca bilangan bait sama dengan panjang dari array bermula dari kedudukan permulaan.

Kaedah ByteArrayInputStream

The ByteArrayInputStreamkelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam InputStreamkelas.

baca () Kaedah

  • read() - membaca bait tunggal dari array yang ada dalam aliran input
  • read(byte() array) - membaca bait dari aliran input dan menyimpan dalam susunan yang ditentukan
  • read(byte() array, int start, int length) - membaca bilangan bait sama dengan panjang dari aliran dan menyimpan dalam susunan yang ditentukan bermula dari kedudukan 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(); ) ) ) 

Pengeluaran

 Bait 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 merangkumi semua data dari susunan yang ditentukan. Untuk membaca data dari aliran input, kami telah menggunakan read()kaedahnya.

tersedia () Kaedah

Untuk mendapatkan jumlah bait yang tersedia dalam aliran input, kita dapat menggunakan available()kaedahnya. 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(); ) ) ) 

Pengeluaran

 Bait yang tersedia pada awal: 4 Bait yang tersedia pada akhir: 2 

Dalam contoh di atas,

  1. Kami telah menggunakan available()kaedah untuk memeriksa jumlah bait yang tersedia dalam aliran input.
  2. Kami kemudian menggunakan read()kaedah 2 kali untuk membaca 2 bait dari aliran input.
  3. Sekarang, setelah membaca 2 bait, kami telah memeriksa bait yang ada. Kali ini bait yang tersedia menurun sebanyak 2.

melangkau () Kaedah

Untuk membuang dan melangkau bilangan bait yang ditentukan, kita boleh menggunakan skip()kaedahnya. 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(); ) ) ) 

Pengeluaran

 Aliran input setelah melangkau 2 bait: 3, 4, 

Dalam contoh di atas, kami telah menggunakan kaedah langkau () untuk melangkau 2 bait data dari aliran input. Oleh itu 1 dan 2 tidak dibaca dari aliran input.

tutup () Kaedah

Untuk menutup aliran input, kita dapat menggunakan close()kaedahnya.

Walau bagaimanapun, close()kaedah ini tidak memberi kesan di ByteArrayInputStreamkelas. Kita boleh menggunakan kaedah kelas ini walaupun close()kaedah itu dipanggil.

Kaedah Lain ByteArrayInputStream

Kaedah Penerangan
finalize() memastikan bahawa close()kaedah itu disebut
mark() menandakan kedudukan dalam aliran input sehingga data yang telah dibaca
reset() mengembalikan kawalan ke titik dalam aliran input di mana tanda itu ditetapkan
markSupported() memeriksa apakah aliran input menyokong mark()danreset()

Untuk mengetahui lebih lanjut, lawati Java ByteArrayInputStream (dokumentasi Java rasmi).

Artikel menarik...