Java ByteArrayInputStream (esimerkkien kanssa)

Tässä opetusohjelmassa opitaan Java ByteArrayInputStreamista ja sen menetelmistä esimerkkien avulla.

ByteArrayInputStreamLuokan java.iopaketti voidaan käyttää lukemaan joukko tulotiedot (tavuina).

Se laajentaa InputStreamabstraktia luokkaa.

Huomaa : Sisään ByteArrayInputStreamtulovirta luodaan käyttämällä tavua. Se sisältää sisäisen taulukon tietyn tavuisen taulukon tietojen tallentamiseksi.

Luo ByteArrayInputStream

Tavuistaulukon syöttövirran luomiseksi meidän on java.io.ByteArrayInputStreamensin tuotava paketti. Kun tuot paketin, voimme luoda tulovirran seuraavasti.

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

Tässä olemme luoneet tulovirran, joka lukee kokonaiset tiedot arrtaulukosta. Voimme kuitenkin luoda myös tulovirran, joka lukee vain osan matriisista.

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

Tässä tulovirta lukee tavua pituutta vastaavan määrän tavuja lähtöasemasta alkaen.

ByteArrayInputStream-menetelmät

ByteArrayInputStreamLuokka antaa toteutuksia eri menetelmiä esittää, että InputStreamluokan.

read () Menetelmä

  • read() - lukee yhden tavun tulovirrassa olevasta taulukosta
  • read(byte() array) - lukee tavuja syöttövirrasta ja tallentaa määritettyyn matriisiin
  • read(byte() array, int start, int length) - lukee pituuden verran tavujen määrän virrasta ja tallentaa määritettyyn matriisiin sijainnin alusta alkaen

Esimerkki: ByteArrayInputStream lukemaan tietoja

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

Tuotos

 Tulovirrasta luetut tavut: 1, 2, 3, 4, 

Yllä olevassa esimerkissä olemme luoneet tavutaulukkotulovirran nimeltä input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Tässä tulovirta sisältää kaikki tiedot määritetystä taulukosta. Tietojen lukemiseksi syöttövirrasta olemme käyttäneet read()menetelmää.

käytettävissä () Menetelmä

Saadaksemme käytettävissä olevan tavun määrän syöttövirrassa voimme käyttää available()menetelmää. Esimerkiksi,

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

Tuotos

 Käytettävissä olevat tavut alussa: 4 Käytettävissä olevat tavut lopussa: 2 

Yllä olevassa esimerkissä

  1. Olemme käyttäneet available()menetelmää tarkistaaksemme käytettävissä olevien tavujen määrän syöttövirrassa.
  2. Olemme sitten käyttäneet read()menetelmää 2 kertaa lukemaan 2 tavua tulovirrasta.
  3. Kun olemme lukeneet 2 tavua, olemme tarkistaneet käytettävissä olevat tavut. Tällä kertaa käytettävissä olevat tavut laskivat 2: lla.

skip () Menetelmä

Hylätään ja ohitetaan määritetty määrä tavuja, voimme käyttää skip()menetelmää. Esimerkiksi,

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

Tuotos

 Syöttövirta 2 tavun ohittamisen jälkeen: 3, 4, 

Yllä olevassa esimerkissä olemme käyttäneet skip () -menetelmää ohittaa 2 tavua dataa tulovirrasta. Siksi 1 ja 2 ei lueta tulovirrasta.

sulje () Menetelmä

Tulovirran sulkemiseksi voimme käyttää close()menetelmää.

Kuitenkin close()menetelmä ei ole vaikutusta ByteArrayInputStreamluokassa. Voimme käyttää tämän luokan close()menetelmiä myös sen jälkeen, kun menetelmä on kutsuttu.

Muut ByteArrayInputStreamin menetelmät

Menetelmät Kuvaukset
finalize() varmistaa, että close()menetelmää kutsutaan
mark() merkitsee syötevirran sijainnin, johon tiedot on luettu
reset() palauttaa ohjauksen tulovirran pisteeseen, johon merkki asetettiin
markSupported() tarkistaa, tukeeko tulovirta mark()jareset()

Lisätietoja on Java ByteArrayInputStream -sivustossa (virallinen Java-dokumentaatio).

Mielenkiintoisia artikkeleita...