Java ByteArrayInputStream (ar piemēriem)

Šajā apmācībā mēs uzzināsim par Java ByteArrayInputStream un tā metodēm ar piemēru palīdzību.

ByteArrayInputStreamNo klases java.iopaketē var izmantot, lai lasītu masīvu ieejas datus (baitos).

Tas paplašina InputStreamabstrakto klasi.

Piezīme : ByteArrayInputStreamIevades straume tiek izveidota, izmantojot baitu masīvu. Tas ietver iekšējo masīvu, lai glabātu datus par konkrēto baitu masīvu.

Izveidojiet ByteArrayInputStream

Lai izveidotu baitu masīva ievades straumi, mums vispirms jāimportē java.io.ByteArrayInputStreampakete. Pēc pakotnes importēšanas mēs varam izveidot ievades straumi.

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

Šeit mēs esam izveidojuši ievades straumi, kas nolasa visus arrmasīva datus . Tomēr mēs varam izveidot arī ievades straumi, kas no masīva nolasa tikai dažus datus.

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

Šeit ievades straume nolasa baitu skaitu, kas vienāds ar garumu no masīva, sākot no sākuma stāvokļa.

ByteArrayInputStream metodes

ByteArrayInputStreamKlase nodrošina implementācijas dažādām metodēm prezentēt šajā InputStreamklasē.

lasīt () Metode

  • read() - nolasa vienu baitu no masīva, kas atrodas ievades straumē
  • read(byte() array) - nolasa baitus no ievades straumes un glabā norādītajā masīvā
  • read(byte() array, int start, int length) - no straumes nolasa baitu skaitu, kas vienāds ar garumu, un glabā norādītajā masīvā, sākot no pozīcijas sākuma

Piemērs: ByteArrayInputStream, lai lasītu datus

 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(); ) ) ) 

Rezultāts

 No ievades straumes nolasītie baiti: 1, 2, 3, 4, 

Iepriekš minētajā piemērā mēs esam izveidojuši baitu masīva ievades straumi ar nosaukumu input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Šeit ievades straume ietver visus datus no norādītā masīva. Lai lasītu datus no ievades straumes, mēs izmantojām read()metodi.

pieejama () metode

Lai iegūtu pieejamo baitu skaitu ievades straumē, mēs varam izmantot available()metodi. Piemēram,

 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(); ) ) ) 

Rezultāts

 Pieejamie baiti sākumā: 4 Pieejamie baiti beigās: 2 

Iepriekš minētajā piemērā

  1. Mēs esam izmantojuši available()metodi, lai pārbaudītu pieejamo baitu skaitu ievades straumē.
  2. Pēc tam mēs izmantojām read()metodi 2 reizes, lai nolasītu 2 baitus no ievades straumes.
  3. Tagad, izlasot 2 baitus, mēs esam pārbaudījuši pieejamos baitus. Šoreiz pieejamie baiti samazinājās par 2.

izlaist () metode

Lai izmestu un izlaistu norādīto baitu skaitu, mēs varam izmantot skip()metodi. Piemēram,

 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(); ) ) ) 

Rezultāts

 Ievades straume pēc 2 baitu izlaišanas: 3, 4, 

Iepriekš minētajā piemērā mēs izmantojām skip () metodi, lai izlaistu 2 baitus datu no ievades straumes. Tādējādi 1. un 2. punkts netiek nolasīts no ievades straumes.

aizvērt () metode

Lai aizvērtu ievades straumi, mēs varam izmantot close()metodi.

Tomēr close()metodei ByteArrayInputStreamklasē nav ietekmes . Šīs klases metodes mēs varam izmantot arī pēc close()metodes izsaukšanas.

Citas ByteArrayInputStream metodes

Metodes Apraksti
finalize() nodrošina close()metodes izsaukšanu
mark() atzīmē ievades straumes pozīciju, līdz kurai dati ir nolasīti
reset() atgriež vadību tajā ievades straumes punktā, kurā tika iestatīta atzīme
markSupported() pārbauda, ​​vai ievades straume atbalsta mark()unreset()

Lai uzzinātu vairāk, apmeklējiet Java ByteArrayInputStream (oficiālā Java dokumentācija).

Interesanti raksti...