Java ByteArrayInputStream (med eksempler)

I denne vejledning lærer vi om Java ByteArrayInputStream og dens metoder ved hjælp af eksempler.

Den ByteArrayInputStreamklasse af java.ioemballagen kan anvendes til at læse et array af inputdata (i bytes).

Det udvider den InputStreamabstrakte klasse.

Bemærk : I ByteArrayInputStream, oprettes inputstrømmen ved hjælp af arrayet af bytes. Det inkluderer et internt array til lagring af data for det pågældende byte-array.

Opret en ByteArrayInputStream

For at oprette en byte-array-inputstrøm skal vi først importere java.io.ByteArrayInputStreampakken. Når vi først har importeret pakken, kan du oprette en inputstrøm her.

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

Her har vi oprettet en inputstrøm, der læser hele data fra arrarrayet. Vi kan dog også oprette inputstrømmen, der kun læser nogle data fra arrayet.

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

Her læser inputstrømmen antallet af bytes, der er lig med længden fra arrayet startende fra startpositionen.

Metoder til ByteArrayInputStream

Den ByteArrayInputStreamklasse giver implementeringer for forskellige metoder præsentere i InputStreamklasse.

læs () Metode

  • read() - læser den enkelte byte fra det array, der er til stede i inputstrømmen
  • read(byte() array) - læser bytes fra inputstrømmen og gemmer i det specificerede array
  • read(byte() array, int start, int length) - læser antallet af byte svarende til længden fra strømmen og gemmer i det specificerede array startende fra positionens start

Eksempel: ByteArrayInputStream for at læse 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(); ) ) ) 

Produktion

 Bytes læst fra inputstrømmen: 1, 2, 3, 4, 

I ovenstående eksempel har vi oprettet en byte-array-inputstrøm med navnet input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Her inkluderer inputstrømmen alle data fra det specificerede array. For at læse data fra inputstrømmen har vi brugt read()metoden.

tilgængelig () Metode

For at få antallet af tilgængelige bytes i inputstrømmen kan vi bruge 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(); ) ) ) 

Produktion

 Tilgængelige bytes i starten: 4 Tilgængelige bytes i slutningen: 2 

I ovenstående eksempel

  1. Vi har brugt available()metoden til at kontrollere antallet af tilgængelige bytes i inputstrømmen.
  2. Vi har derefter brugt read()metoden 2 gange til at læse 2 bytes fra inputstrømmen.
  3. Efter at have læst de 2 byte har vi nu kontrolleret de tilgængelige byte. Denne gang faldt de tilgængelige bytes med 2.

spring () Metode

For at kassere og springe det angivne antal bytes kan vi bruge 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(); ) ) ) 

Produktion

 Input stream efter at hoppe over 2 bytes: 3, 4, 

I ovenstående eksempel har vi brugt skip () -metoden til at springe over 2 byte data fra inputstrømmen. Derfor læses ikke 1 og 2 fra inputstrømmen.

close () Metode

For at lukke inputstrømmen kan vi bruge close()metoden.

Imidlertid close()fremgangsmåde har ingen effekt i ByteArrayInputStreamklassen. Vi kan bruge metoderne i denne klasse, selv efter at close()metoden er kaldt.

Andre metoder til ByteArrayInputStream

Metoder Beskrivelser
finalize() sikrer, at close()metoden kaldes
mark() markerer positionen i inputstrømmen, op til hvilken data er blevet læst
reset() returnerer kontrolelementet til det punkt i inputstrømmen, hvor mærket blev sat
markSupported() kontrollerer, om inputstrømmen understøtter mark()ogreset()

For at lære mere, besøg Java ByteArrayInputStream (officiel Java-dokumentation).

Interessante artikler...