U ovom uputstvu uz primjere ćemo naučiti o Javi ByteArrayInputStream i njezinim metodama.
ByteArrayInputStream
Razred java.io
paket može se koristiti za čitanje niz ulaznih podataka (u bajtovima).
Proširuje InputStream
apstraktnu klasu.
Napomena : U ByteArrayInputStream
, ulazni tok kreira se pomoću niza bajtova. Uključuje unutarnji niz za spremanje podataka tog određenog bajt polja.
Stvorite ByteArrayInputStream
Da bismo stvorili tok ulaznog niza bajtova, prvo moramo uvesti java.io.ByteArrayInputStream
paket. Nakon što uvozimo paket, evo kako možemo stvoriti ulazni tok.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Ovdje smo stvorili ulazni tok koji čita čitave podatke iz arr
niza. Međutim, možemo stvoriti i ulazni tok koji čita samo neke podatke iz niza.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Ovdje ulazni tok očitava broj bajtova jednak duljini iz niza počevši od početne pozicije.
Metode ByteArrayInputStream
ByteArrayInputStream
Klasa pruža implementacije za različite metode prezentirati u InputStream
razredu.
read () metoda
read()
- čita jedan bajt iz niza prisutnog u ulaznom tokuread(byte() array)
- čita bajtove iz ulaznog toka i pohranjuje u navedeni nizread(byte() array, int start, int length)
- čita broj bajtova jednak duljini iz streama i pohranjuje u navedeni niz počevši od početka položaja
Primjer: ByteArrayInputStream za čitanje podataka
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(); ) ) )
Izlaz
Bajtovi pročitani iz ulaznog toka: 1, 2, 3, 4,
U gornjem primjeru stvorili smo ulazni tok bajt polja s imenom input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Ovdje ulazni tok uključuje sve podatke iz navedenog niza. Za čitanje podataka iz ulaznog toka koristili smo read()
metodu.
dostupna () metoda
Da bismo dobili broj dostupnih bajtova u ulaznom toku, možemo koristiti available()
metodu. Na primjer,
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(); ) ) )
Izlaz
Dostupni bajtovi na početku: 4 Dostupni bajtovi na kraju: 2
U gornjem primjeru,
- Koristili smo
available()
metodu za provjeru broja raspoloživih bajtova u ulaznoj struji. - Tada smo
read()
metodu koristili 2 puta za čitanje 2 bajta iz ulaznog toka. - Sada, nakon čitanja 2 bajta, provjerili smo dostupne bajtove. Ovaj put su se dostupni bajtovi smanjili za 2.
preskoči () Metoda
Da bismo odbacili i preskočili navedeni broj bajtova, možemo se poslužiti skip()
metodom. Na primjer,
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(); ) ) )
Izlaz
Ulazni tok nakon preskakanja 2 bajta: 3, 4,
U gornjem primjeru koristili smo metodu skip () za preskakanje 2 bajta podataka iz ulaznog toka. Stoga se 1 i 2 ne očitavaju iz ulaznog toka.
close () Metoda
Da bismo zatvorili ulazni tok, možemo koristiti close()
metodu.
Međutim, close()
metoda nema učinka u ByteArrayInputStream
nastavi. Metode ove klase možemo koristiti i nakon što je close()
metoda pozvana.
Ostale metode ByteArrayInputStream
Metode | Opisi |
---|---|
finalize() | osigurava pozivanje close() metode |
mark() | označava položaj u ulaznom toku do kojeg su podaci pročitani |
reset() | vraća kontrolu na točku u ulaznom toku gdje je postavljena oznaka |
markSupported() | provjerava podržava li ulazni tok mark() ireset() |
Da biste saznali više, posjetite Java ByteArrayInputStream (službena Java dokumentacija).