Dalam tutorial ini, kita akan belajar mengenai Java ByteArrayInputStream dan kaedahnya dengan bantuan contoh.
The ByteArrayInputStream
golongan orang java.io
pakej boleh digunakan untuk membaca pelbagai data input (dalam bait).
Ia meluaskan InputStream
kelas 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.ByteArrayInputStream
pakej 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 arr
array. 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 ByteArrayInputStream
kelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam InputStream
kelas.
baca () Kaedah
read()
- membaca bait tunggal dari array yang ada dalam aliran inputread(byte() array)
- membaca bait dari aliran input dan menyimpan dalam susunan yang ditentukanread(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,
- Kami telah menggunakan
available()
kaedah untuk memeriksa jumlah bait yang tersedia dalam aliran input. - Kami kemudian menggunakan
read()
kaedah 2 kali untuk membaca 2 bait dari aliran input. - 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 ByteArrayInputStream
kelas. 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).