Java ByteArrayInputStream (s primjerima)

U ovom uputstvu uz primjere ćemo naučiti o Javi ByteArrayInputStream i njezinim metodama.

ByteArrayInputStreamRazred java.iopaket može se koristiti za čitanje niz ulaznih podataka (u bajtovima).

Proširuje InputStreamapstraktnu 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.ByteArrayInputStreampaket. 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 arrniza. 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

ByteArrayInputStreamKlasa pruža implementacije za različite metode prezentirati u InputStreamrazredu.

read () metoda

  • read() - čita jedan bajt iz niza prisutnog u ulaznom toku
  • read(byte() array) - čita bajtove iz ulaznog toka i pohranjuje u navedeni niz
  • read(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,

  1. Koristili smo available()metodu za provjeru broja raspoloživih bajtova u ulaznoj struji.
  2. Tada smo read()metodu koristili 2 puta za čitanje 2 bajta iz ulaznog toka.
  3. 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 ByteArrayInputStreamnastavi. 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).

Zanimljivi članci...