Java ByteArrayInputStream (med eksempler)

I denne veiledningen vil vi lære om Java ByteArrayInputStream og dens metoder ved hjelp av eksempler.

Den ByteArrayInputStreamklasse av java.iopakken kan brukes til å lese en rekke inngangsdata (i byte).

Det utvider den InputStreamabstrakte 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.ByteArrayInputStreampakken. 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 arrmatrisen. 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 ByteArrayInputStreamklasse gir implementeringer for forskjellige metoder for å medføre i InputStreamklassen.

les () Metode

  • read() - leser enkeltbyten fra matrisen i inngangsstrømmen
  • read(byte() array) - leser byte fra inngangsstrømmen og lagrer i den angitte matrisen
  • read(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,

  1. Vi har brukt available()metoden for å sjekke antall tilgjengelige byte i inngangsstrømmen.
  2. Vi har da brukt read()metoden to ganger for å lese 2 byte fra inngangsstrømmen.
  3. 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 ByteArrayInputStreamklassen. 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).

Interessante artikler...