I denne veiledningen vil vi lære om Java ByteArrayInputStream og dens metoder ved hjelp av eksempler.
Den ByteArrayInputStream
klasse av java.io
pakken kan brukes til å lese en rekke inngangsdata (i byte).
Det utvider den InputStream
abstrakte klassen.
Merk : I ByteArrayInputStream
, blir inngangsstrømmen opprettet ved hjelp av bytesamlingen. Den inkluderer en intern matrise for å lagre data for det aktuelle byte-arrayet.
Opprett en ByteArrayInputStream
For å opprette en inngangsstrøm for byte-matriser, må vi først importere java.io.ByteArrayInputStream
pakken. Når vi har importert pakken, kan du lage en inngangsstrøm her.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Her har vi opprettet en inngangsstrøm som leser hele data fra arr
matrisen. Vi kan imidlertid også opprette inngangsstrømmen som bare leser noen data fra matrisen.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Her leser inngangsstrømmen antall byte som er lik lengden fra matrisen fra startposisjonen.
Metoder for ByteArrayInputStream
Den ByteArrayInputStream
klasse gir implementeringer for forskjellige metoder for å medføre i InputStream
klassen.
les () Metode
read()
- leser enkeltbyten fra matrisen i inngangsstrømmenread(byte() array)
- leser byte fra inngangsstrømmen og lagrer i den angitte matrisenread(byte() array, int start, int length)
- leser antall byte som er lik lengden fra strømmen og lagrer i den spesifiserte matrisen fra posisjonsstart
Eksempel: ByteArrayInputStream for å lese 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(); ) ) )
Produksjon
Byte lest fra inngangsstrømmen: 1, 2, 3, 4,
I eksemplet ovenfor har vi opprettet en byte-matrisestrøm med navnet input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Her inkluderer inngangsstrømmen alle dataene fra den spesifiserte matrisen. For å lese data fra inngangsstrømmen har vi brukt read()
metoden.
tilgjengelig () Metode
For å få antall tilgjengelige byte i inngangsstrømmen, kan vi bruke available()
metoden. For eksempel,
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(); ) ) )
Produksjon
Tilgjengelige byte i begynnelsen: 4 Tilgjengelige byte på slutten: 2
I eksemplet ovenfor,
- Vi har brukt
available()
metoden for å sjekke antall tilgjengelige byte i inngangsstrømmen. - Vi har da brukt
read()
metoden to ganger for å lese 2 byte fra inngangsstrømmen. - Nå, etter å ha lest de to byte, har vi sjekket tilgjengelige byte. Denne gangen reduserte de tilgjengelige byte med 2.
skip () Metode
For å forkaste og hoppe over det angitte antallet byte, kan vi bruke skip()
metoden. For eksempel,
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(); ) ) )
Produksjon
Inngangsstrøm etter å ha hoppet over 2 byte: 3, 4,
I eksemplet ovenfor har vi brukt skip () -metoden til å hoppe over 2 byte data fra inngangsstrømmen. Derfor blir ikke 1 og 2 lest fra inngangsstrømmen.
lukk () Metode
For å lukke inngangsstrømmen kan vi bruke close()
metoden.
Men det close()
har metoden ingen effekt i ByteArrayInputStream
klassen. Vi kan bruke metodene i denne klassen selv etter at close()
metoden er kalt.
Andre metoder for ByteArrayInputStream
Metoder | Beskrivelser |
---|---|
finalize() | sørger for at close() metoden blir kalt |
mark() | markerer posisjonen i inngangsstrømmen som data er lest opp til |
reset() | returnerer kontrollen til punktet i inngangsstrømmen der merket ble satt |
markSupported() | sjekker om inngangsstrømmen støtter mark() ogreset() |
For å lære mer, besøk Java ByteArrayInputStream (offisiell Java-dokumentasjon).