I denna handledning lär vi oss om Java ByteArrayInputStream och dess metoder med hjälp av exempel.
Paketets ByteArrayInputStream
klass java.io
kan användas för att läsa en matris av indata (i byte).
Det utvidgar den InputStream
abstrakta klassen.
Obs : I ByteArrayInputStream
skapas ingångsströmmen med hjälp av byte-arrayen. Den innehåller en intern array för att lagra data för den specifika byte-arrayen.
Skapa en ByteArrayInputStream
För att skapa en ingångsström för byte-array måste vi importera java.io.ByteArrayInputStream
paketet först. När vi väl har importerat paketet kan du skapa en ingångsström här.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Här har vi skapat en ingångsström som läser hela data från arr
matrisen. Vi kan dock också skapa ingångsströmmen som bara läser en del data från matrisen.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Här läser ingångsströmmen antalet byte som är lika med längden från matrisen från startpositionen.
Metoder för ByteArrayInputStream
Den ByteArrayInputStream
klass erbjuder implementeringar för olika metoder att presentera i InputStream
klassen.
läs () Metod
read()
- läser den enda byten från matrisen i ingångsströmmenread(byte() array)
- läser byte från ingångsströmmen och lagras i den angivna matrisenread(byte() array, int start, int length)
- läser antalet byte som är lika med längden från strömmen och lagras i den angivna matrisen med start från positionens start
Exempel: ByteArrayInputStream för att läsa 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
Byten som läses från ingångsströmmen: 1, 2, 3, 4,
I exemplet ovan har vi skapat en inmatningsström för byte-array med namnet input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Här inkluderar ingångsströmmen alla data från den angivna matrisen. För att läsa data från ingångsströmmen har vi använt read()
metoden.
tillgänglig () Metod
För att få antalet tillgängliga byte i ingångsströmmen kan vi använda available()
metoden. Till exempel,
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
Tillgängliga byte i början: 4 Tillgängliga byte i slutet: 2
I exemplet ovan,
- Vi har använt
available()
metoden för att kontrollera antalet tillgängliga byte i ingångsströmmen. - Vi har sedan använt
read()
metoden två gånger för att läsa 2 byte från ingångsströmmen. - Nu, efter att ha läst de 2 byten, har vi kontrollerat tillgängliga byte. Den här gången minskade de tillgängliga byten med 2.
skip () Metod
För att kasta och hoppa över det angivna antalet byte kan vi använda skip()
metoden. Till exempel,
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
Ingångsström efter att ha hoppat över 2 byte: 3, 4,
I exemplet ovan har vi använt skip () -metoden för att hoppa över 2 byte data från ingångsströmmen. Följaktligen läses inte 1 och 2 från ingångsströmmen.
close () Metod
För att stänga ingångsströmmen kan vi använda close()
metoden.
Men close()
har metoden ingen effekt i ByteArrayInputStream
klassen. Vi kan använda metoderna i denna klass även efter att close()
metoden har anropats.
Andra metoder för ByteArrayInputStream
Metoder | Beskrivningar |
---|---|
finalize() | säkerställer att close() metoden anropas |
mark() | markerar positionen i ingångsströmmen till vilken data har lästs |
reset() | återgår kontrollen till den punkt i ingångsströmmen där märket sattes |
markSupported() | kontrollerar om ingångsströmmen stöder mark() ochreset() |
För att lära dig mer, besök Java ByteArrayInputStream (officiell Java-dokumentation).