V tej vadnici bomo s pomočjo primerov spoznali Java ByteArrayInputStream in njene metode.
ByteArrayInputStream
Razred java.io
paket se lahko uporablja za branje paleto vhodnih podatkov (v bajtih).
Razširja InputStream
abstraktni razred.
Opomba : ByteArrayInputStream
Vhodni 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.ByteArrayInputStream
paket. 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 arr
polja. 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
ByteArrayInputStream
Razred določa izvedb za različne načine predstaviti v InputStream
razredu.
metoda read ()
read()
- bere en bajt iz polja, ki je prisotno v vhodnem tokuread(byte() array)
- bere bajte iz vhodnega toka in shrani v določeno matrikoread(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
- Z
available()
metodo smo preverili število razpoložljivih bajtov v vhodnem toku. - Nato smo
read()
metodo dvakrat uporabili za branje 2 bajtov iz vhodnega toka. - 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 ByteArrayInputStream
pouku 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).