Java ByteArrayInputStream (cu exemple)

În acest tutorial, vom afla despre Java ByteArrayInputStream și metodele sale cu ajutorul exemplelor.

ByteArrayInputStreamClasa java.ioPachetul poate fi utilizat pentru a citi o serie de date de intrare (în octeți).

Extinde InputStreamclasa abstractă.

Notă : În ByteArrayInputStream, fluxul de intrare este creat folosind matricea de octeți. Include o matrice internă pentru stocarea datelor din matricea respectivă de octeți.

Creați un ByteArrayInputStream

Pentru a crea un flux de intrare în matrice de octeți, trebuie mai java.io.ByteArrayInputStreamîntâi să importăm pachetul. Odată ce am importat pachetul, iată cum putem crea un flux de intrare.

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

Aici, am creat un flux de intrare care citește date întregi din arrmatrice. Cu toate acestea, putem crea și fluxul de intrare care citește doar unele date din matrice.

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

Aici fluxul de intrare citește numărul de octeți egal cu lungimea din matrice începând de la poziția de pornire.

Metode de ByteArrayInputStream

ByteArrayInputStreamClasa oferă implementări pentru diferite metode prezintă în InputStreamclasă.

read () Metodă

  • read() - citește octetul unic din tabloul prezent în fluxul de intrare
  • read(byte() array) - citește octeți din fluxul de intrare și stochează în matricea specificată
  • read(byte() array, int start, int length) - citește numărul de octeți egal cu lungimea fluxului și stochează în matricea specificată începând de la începutul poziției

Exemplu: ByteArrayInputStream pentru citirea datelor

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

Ieșire

 Octetii citiți din fluxul de intrare: 1, 2, 3, 4, 

În exemplul de mai sus, am creat un flux de intrare matrice de octeți numit input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Aici, fluxul de intrare include toate datele din matricea specificată. Pentru a citi date din fluxul de intrare, am folosit read()metoda.

disponibil () Metodă

Pentru a obține numărul de octeți disponibili în fluxul de intrare, putem folosi available()metoda. De exemplu,

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

Ieșire

 Octiți disponibili la început: 4 Octiți disponibili la sfârșit: 2 

În exemplul de mai sus,

  1. Am folosit available()metoda pentru a verifica numărul de octeți disponibili în fluxul de intrare.
  2. Am folosit apoi read()metoda de 2 ori pentru a citi 2 octeți din fluxul de intrare.
  3. Acum, după citirea celor 2 octeți, am verificat octeții disponibili. De data aceasta octeții disponibili au scăzut cu 2.

skip () Metodă

Pentru a elimina și a omite numărul specificat de octeți, putem folosi skip()metoda. De exemplu,

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

Ieșire

 Flux de intrare după omiterea a 2 octeți: 3, 4, 

În exemplul de mai sus, am folosit metoda skip () pentru a sări peste 2 octeți de date din fluxul de intrare. Prin urmare, 1 și 2 nu sunt citite din fluxul de intrare.

close () Metoda

Pentru a închide fluxul de intrare, putem folosi close()metoda.

Cu toate acestea, close()metoda nu are efect în ByteArrayInputStreamclasă. Putem folosi metodele acestei clase chiar și după close()apelarea metodei.

Alte metode ale ByteArrayInputStream

Metode Descrieri
finalize() asigură apelarea close()metodei
mark() marchează poziția în fluxul de intrare până la care au fost citite datele
reset() returnează controlul la punctul din fluxul de intrare unde a fost setată marca
markSupported() verifică dacă fluxul de intrare acceptă mark()șireset()

Pentru a afla mai multe, vizitați Java ByteArrayInputStream (documentație oficială Java).

Articole interesante...