Java ByteArrayInputStream (z primeri)

V tej vadnici bomo s pomočjo primerov spoznali Java ByteArrayInputStream in njene metode.

ByteArrayInputStreamRazred java.iopaket se lahko uporablja za branje paleto vhodnih podatkov (v bajtih).

Razširja InputStreamabstraktni razred.

Opomba : ByteArrayInputStreamVhodni tok se ustvari z uporabo bajtov bajtov. Vključuje notranjo matriko za shranjevanje podatkov o tej bajtni matriki.

Ustvarite ByteArrayInputStream

Če želite ustvariti vhodni tok bajtne matrike, moramo najprej uvoziti java.io.ByteArrayInputStreampaket. Ko uvozimo paket, je tukaj opisano, kako lahko ustvarimo vhodni tok.

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

Tu smo ustvarili vhodni tok, ki bere celotne podatke iz arrpolja. Lahko pa ustvarimo tudi vhodni tok, ki bere le nekatere podatke iz polja.

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

Tu vhodni tok bere število bajtov, enako dolžini iz polja, začenši z začetnega položaja.

Metode ByteArrayInputStream

ByteArrayInputStreamRazred določa izvedb za različne načine predstaviti v InputStreamrazredu.

metoda read ()

  • read() - bere en bajt iz polja, ki je prisotno v vhodnem toku
  • read(byte() array) - bere bajte iz vhodnega toka in shrani v določeno matriko
  • read(byte() array, int start, int length) - iz toka prebere število bajtov, enako dolžini, in shrani v določeno matriko, začenši z začetkom položaja

Primer: ByteArrayInputStream za branje podatkov

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

Izhod

 Bajti, prebrani iz vhodnega toka: 1, 2, 3, 4, 

V zgornjem primeru smo ustvarili vhodni tok bajtnega polja z imenom input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Tu vhodni tok vključuje vse podatke iz podane matrike. Za branje podatkov iz vhodnega toka smo uporabili read()metodo.

na voljo () Metoda

Za pridobitev števila razpoložljivih bajtov v vhodnem toku lahko uporabimo available()metodo. Na primer

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

Izhod

 Na voljo bajti na začetku: 4 Na voljo bajti na koncu: 2 

V zgornjem primeru je

  1. Z available()metodo smo preverili število razpoložljivih bajtov v vhodnem toku.
  2. Nato smo read()metodo dvakrat uporabili za branje 2 bajtov iz vhodnega toka.
  3. Zdaj, ko smo prebrali 2 bajta, smo preverili razpoložljive bajte. Tokrat so se razpoložljivi bajti zmanjšali za 2.

preskoči () Metoda

Če želimo zavreči in preskočiti določeno število bajtov, lahko uporabimo skip()metodo. Na primer

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

Izhod

 Vhodni tok po preskoku 2 bajtov: 3, 4, 

V zgornjem primeru smo uporabili metodo skip () za preskok 2 bajtov podatkov iz vhodnega toka. Zato 1 in 2 ne bereta iz vhodnega toka.

metoda close ()

Za zapiranje vhodnega toka lahko uporabimo close()metodo.

Vendar close()metoda pri ByteArrayInputStreampouku nima učinka . Metode tega razreda lahko uporabljamo tudi po close()klicu metode.

Druge metode ByteArrayInputStream

Metode Opisi
finalize() zagotavlja, da je close()metoda poklicana
mark() označuje položaj v vhodnem toku, do katerega so bili prebrani podatki
reset() vrne kontrolnik na točko v vhodnem toku, kjer je bila nastavljena oznaka
markSupported() preveri, ali vhodni tok podpira mark()inreset()

Če želite izvedeti več, obiščite Java ByteArrayInputStream (uradna dokumentacija Java).

Zanimive Članki...