„Java ByteArrayInputStream“ (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java ByteArrayInputStream“ ir jos metodus.

ByteArrayInputStreamKlasės java.iopakuotėje gali būti naudojamas skaityti įvesties duomenų masyvas (baitais).

Tai pratęsia InputStreamabstrakčią klasę.

Pastaba : ByteArrayInputStreamĮvesties srautas sukurtas naudojant baitų masyvą. Jame yra vidinis masyvas tam tikro baito masyvo duomenims saugoti.

Sukurkite „ByteArrayInputStream“

Norėdami sukurti baitų masyvo įvesties srautą, pirmiausia turime importuoti java.io.ByteArrayInputStreampaketą. Importavę paketą, galime sukurti įvesties srautą.

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

Čia mes sukūrėme įvesties srautą, kuris nuskaito visus duomenis iš arrmasyvo. Tačiau mes taip pat galime sukurti įvesties srautą, kuris nuskaito tik kai kuriuos duomenis iš masyvo.

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

Čia įvesties srautas nuskaito baitų skaičių, lygų ilgiui nuo masyvo pradedant nuo pradinės padėties.

„ByteArrayInputStream“ metodai

ByteArrayInputStreamKlasė suteikia realizacijos įvairių metodų pristatyti į InputStreamklasę.

skaityti () metodas

  • read() - nuskaito vieną baitą iš masyvo, esančio įvesties sraute
  • read(byte() array) - skaito baitus iš įvesties srauto ir saugo nurodytame masyve
  • read(byte() array, int start, int length) - nuskaito baitų skaičių, lygų ilgiui iš srauto ir saugo nurodytame masyve, pradedant nuo pozicijos pradžios

Pavyzdys: ByteArrayInputStream duomenims skaityti

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

Rezultatas

 Iš įvesties srauto perskaityti baitai: 1, 2, 3, 4, 

Ankstesniame pavyzdyje mes sukūrėme baitų masyvo įvesties srautą, pavadintą input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Čia įvesties srautas apima visus duomenis iš nurodyto masyvo. Norėdami perskaityti duomenis iš įvesties srauto, naudojome read()metodą.

galima () metodas

Norėdami gauti įvesties sraute galimų baitų skaičių, galime naudoti available()metodą. Pavyzdžiui,

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

Rezultatas

 Galimi baitai pradžioje: 4 galimi baitai pabaigoje: 2 

Ankstesniame pavyzdyje

  1. Mes naudojome available()metodą, kad patikrintume galimų baitų skaičių įvesties sraute.
  2. Tada read()2 kartus naudojome metodą, kad perskaitytume 2 baitus iš įvesties srauto.
  3. Dabar, perskaitę 2 baitus, patikrinome galimus baitus. Šį kartą turimi baitai sumažėjo 2.

praleisti () metodas

Norėdami išmesti ir praleisti nurodytą skaičių baitų, galime naudoti skip()metodą. Pavyzdžiui,

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

Rezultatas

 Įvesties srautas praleidus 2 baitus: 3, 4, 

Ankstesniame pavyzdyje mes naudojome skip () metodą, kad praleistume 2 baitus duomenų iš įvesties srauto. Taigi 1 ir 2 nėra skaitomi iš įvesties srauto.

uždaryti () metodas

Norėdami uždaryti įvesties srautą, galime naudoti close()metodą.

Tačiau close()metodas neturi įtakos ByteArrayInputStreamklasėje. Šios klasės metodus galime naudoti net tada, kai close()metodas yra iškviestas.

Kiti „ByteArrayInputStream“ metodai

Metodai Aprašymai
finalize() užtikrina close()metodo iškvietimą
mark() žymi įvesties srauto vietą, iki kurios duomenys buvo perskaityti
reset() grąžina valdiklį į tašką įvesties sraute, kuriame buvo nustatytas ženklas
markSupported() patikrina, ar įvesties srautas palaiko mark()irreset()

Norėdami sužinoti daugiau, apsilankykite „Java ByteArrayInputStream“ (oficiali „Java“ dokumentacija).

Įdomios straipsniai...