Java ByteArrayInputStream (med exempel)

I denna handledning lär vi oss om Java ByteArrayInputStream och dess metoder med hjälp av exempel.

Paketets ByteArrayInputStreamklass java.iokan användas för att läsa en matris av indata (i byte).

Det utvidgar den InputStreamabstrakta klassen.

Obs : I ByteArrayInputStreamskapas 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.ByteArrayInputStreampaketet 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 arrmatrisen. 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 ByteArrayInputStreamklass erbjuder implementeringar för olika metoder att presentera i InputStreamklassen.

läs () Metod

  • read() - läser den enda byten från matrisen i ingångsströmmen
  • read(byte() array) - läser byte från ingångsströmmen och lagras i den angivna matrisen
  • read(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,

  1. Vi har använt available()metoden för att kontrollera antalet tillgängliga byte i ingångsströmmen.
  2. Vi har sedan använt read()metoden två gånger för att läsa 2 byte från ingångsströmmen.
  3. 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 ByteArrayInputStreamklassen. 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).

Intressanta artiklar...