Tässä opetusohjelmassa opitaan Java ByteArrayInputStreamista ja sen menetelmistä esimerkkien avulla.
ByteArrayInputStream
Luokan java.io
paketti voidaan käyttää lukemaan joukko tulotiedot (tavuina).
Se laajentaa InputStream
abstraktia luokkaa.
Huomaa : Sisään ByteArrayInputStream
tulovirta 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.ByteArrayInputStream
ensin 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 arr
taulukosta. 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
ByteArrayInputStream
Luokka antaa toteutuksia eri menetelmiä esittää, että InputStream
luokan.
read () Menetelmä
read()
- lukee yhden tavun tulovirrassa olevasta taulukostaread(byte() array)
- lukee tavuja syöttövirrasta ja tallentaa määritettyyn matriisiinread(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ä
- Olemme käyttäneet
available()
menetelmää tarkistaaksemme käytettävissä olevien tavujen määrän syöttövirrassa. - Olemme sitten käyttäneet
read()
menetelmää 2 kertaa lukemaan 2 tavua tulovirrasta. - 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 ByteArrayInputStream
luokassa. 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).