Java ByteArrayInputStream (met voorbeelden)

In deze zelfstudie leren we met behulp van voorbeelden over Java ByteArrayInputStream en zijn methoden.

De ByteArrayInputStreamklasse van het java.iopakket kan worden gebruikt om een ​​reeks invoergegevens (in bytes) te lezen.

Het breidt de InputStreamabstracte klasse uit.

Opmerking : In ByteArrayInputStreamwordt de invoerstroom gemaakt met behulp van de reeks bytes. Het bevat een interne array om gegevens van die specifieke byte-array op te slaan.

Maak een ByteArrayInputStream

Om een ​​byte-array-invoerstroom te maken, moeten we het java.io.ByteArrayInputStreampakket eerst importeren . Zodra we het pakket hebben geïmporteerd, kunnen we als volgt een invoerstroom maken.

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

Hier hebben we een invoerstroom gemaakt die volledige gegevens uit de arrarray leest . We kunnen echter ook de invoerstroom maken die slechts enkele gegevens uit de array leest.

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

Hier leest de invoerstroom het aantal bytes dat gelijk is aan de lengte van de array, beginnend vanaf de startpositie.

Methoden van ByteArrayInputStream

De ByteArrayInputStreamklasse biedt implementaties voor verschillende methoden die in de InputStreamklasse aanwezig zijn.

read () Methode

  • read() - leest de enkele byte uit de array die aanwezig is in de invoerstroom
  • read(byte() array) - leest bytes uit de invoerstroom en slaat op in de opgegeven array
  • read(byte() array, int start, int length) - leest het aantal bytes dat gelijk is aan de lengte van de stream en slaat het op in de opgegeven array vanaf het begin van de positie

Voorbeeld: ByteArrayInputStream om gegevens te lezen

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

Uitvoer

 De bytes die uit de invoerstroom worden gelezen: 1, 2, 3, 4, 

In het bovenstaande voorbeeld hebben we een byte-array-invoerstroom gemaakt met de naam input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Hier bevat de invoerstroom alle gegevens uit de opgegeven array. Om gegevens uit de invoerstroom te lezen, hebben we de read()methode gebruikt.

available () Methode

Om het aantal beschikbare bytes in de invoerstroom te krijgen, kunnen we de available()methode gebruiken. Bijvoorbeeld,

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

Uitvoer

 Beschikbare bytes aan het begin: 4 Beschikbare bytes aan het einde: 2 

In het bovenstaande voorbeeld

  1. We hebben de available()methode gebruikt om het aantal beschikbare bytes in de invoerstroom te controleren.
  2. We hebben de read()methode vervolgens 2 keer gebruikt om 2 bytes uit de invoerstroom te lezen.
  3. Nu, na het lezen van de 2 bytes, hebben we de beschikbare bytes gecontroleerd. Dit keer zijn de beschikbare bytes met 2 afgenomen.

skip () methode

Om het opgegeven aantal bytes te verwijderen en over te slaan, kunnen we de skip()methode gebruiken. Bijvoorbeeld,

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

Uitvoer

 Input stream na 2 bytes overslaan: 3, 4, 

In het bovenstaande voorbeeld hebben we de skip () methode gebruikt om 2 bytes aan gegevens uit de invoerstroom over te slaan. Daarom worden 1 en 2 niet gelezen uit de invoerstroom.

close () Methode

Om de invoerstroom te sluiten, kunnen we de close()methode gebruiken.

De close()methode heeft echter geen effect in de ByteArrayInputStreamklas. We kunnen de methoden van deze klasse gebruiken, zelfs nadat de close()methode is aangeroepen.

Andere methoden van ByteArrayInputStream

Methoden Beschrijvingen
finalize() zorgt ervoor dat de close()methode wordt aangeroepen
mark() markeert de positie in de invoerstroom tot waar de gegevens zijn gelezen
reset() geeft het besturingselement terug naar het punt in de invoerstroom waar de markering was ingesteld
markSupported() controleert of de invoerstroom mark()en ondersteuntreset()

Ga voor meer informatie naar Java ByteArrayInputStream (officiële Java-documentatie).

Interessante artikelen...