Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java ByteArrayInputStream“ ir jos metodus.
ByteArrayInputStream
Klasės java.io
pakuotėje gali būti naudojamas skaityti įvesties duomenų masyvas (baitais).
Tai pratęsia InputStream
abstrakč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.ByteArrayInputStream
paketą. 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š arr
masyvo. 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
ByteArrayInputStream
Klasė suteikia realizacijos įvairių metodų pristatyti į InputStream
klasę.
skaityti () metodas
read()
- nuskaito vieną baitą iš masyvo, esančio įvesties srauteread(byte() array)
- skaito baitus iš įvesties srauto ir saugo nurodytame masyveread(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
- Mes naudojome
available()
metodą, kad patikrintume galimų baitų skaičių įvesties sraute. - Tada
read()
2 kartus naudojome metodą, kad perskaitytume 2 baitus iš įvesties srauto. - 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 ByteArrayInputStream
klasė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).