In deze zelfstudie leren we met behulp van voorbeelden over Java ByteArrayInputStream en zijn methoden.
De ByteArrayInputStream
klasse van het java.io
pakket kan worden gebruikt om een reeks invoergegevens (in bytes) te lezen.
Het breidt de InputStream
abstracte klasse uit.
Opmerking : In ByteArrayInputStream
wordt 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.ByteArrayInputStream
pakket 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 arr
array 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 ByteArrayInputStream
klasse biedt implementaties voor verschillende methoden die in de InputStream
klasse aanwezig zijn.
read () Methode
read()
- leest de enkele byte uit de array die aanwezig is in de invoerstroomread(byte() array)
- leest bytes uit de invoerstroom en slaat op in de opgegeven arrayread(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
- We hebben de
available()
methode gebruikt om het aantal beschikbare bytes in de invoerstroom te controleren. - We hebben de
read()
methode vervolgens 2 keer gebruikt om 2 bytes uit de invoerstroom te lezen. - 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 ByteArrayInputStream
klas. 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).