Java BufferedInputStream (esimerkkien kanssa)

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

BufferedInputStreamLuokan java.iopaketti käytetään yhdessä muiden syötevirtojen lukemaan tiedot (tavuina) tehokkaammin.

Se laajentaa InputStreamabstraktia luokkaa.

BufferedInputStreamin toiminta

BufferedInputStreamOn sisäisen puskurin 8192 tavua .

Lukutoiminnon aikana BufferedInputStreampalan tavu luetaan levyltä ja tallennetaan sisäiseen puskuriin. Ja sisäisestä puskurista tavut luetaan erikseen.

Siksi levylle tapahtuvan tiedonsiirron määrä vähenee. Siksi tavujen lukeminen on nopeampaa BufferedInputStream.

Luo BufferedInputStream

Paketin luomiseksi BufferedInputStreammeidän on java.io.BufferedInputStreamensin tuotava paketti. Kun tuot paketin täältä, voimme luoda tulovirran.

 // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); 

Yllä olevassa esimerkissä olemme luoneet BufferdInputStreamnimetyn puskurin FileInputStreamnimeltä mainitun tiedoston kanssa.

Tässä sisäisen puskurin oletuskoko on 8192 tavua. Voimme kuitenkin määrittää myös sisäisen puskurin koon.

 // Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size); 

Puskuri auttaa lukemaan tavuja tiedostoista nopeammin.

BufferedInputStream-menetelmät

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

read () Menetelmä

  • read() - lukee yhden tavun tulovirrasta
  • read(byte() arr) - lukee tavuja virrasta ja tallentaa määritettyyn ryhmään
  • read(byte() arr, int start, int length) - lukee tavun määrän, joka on yhtä suuri kuin virta ja tallentaa tietylle taulukolle aloituskohdasta alkaen

Oletetaan, että meillä on tiedosto nimeltä input.txt, jolla on seuraava sisältö.

 This is a line of text inside the file. 

Yritetään lukea tiedosto käyttämällä BufferedInputStream.

 import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file int i = input .read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Tuotos

 Tämä on tekstirivi tiedoston sisällä. 

Edellä olevassa esimerkissä olemme luoneet puskuroidun tulovirran, jonka nimi on puskuri FileInputStream. Syöttövirta on linkitetty tiedostoon input.txt .

 FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); 

Tässä olemme käyttäneet read()menetelmää tavujärjestelmän lukemiseen puskuroidun lukijan sisäisestä puskurista.

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.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Tuotos

 Käytettävissä olevat tavut alussa: 39 Käytettävissä olevat tavut lopussa: 36 

Yllä olevassa esimerkissä

  1. available()Tarkastamme ensin menetelmän käytettävissä olevien tavujen määrän syöttövirrassa.
  2. Sitten olemme käyttäneet read()menetelmää 3 kertaa lukemaan 3 tavua tulovirrasta.
  3. Luettuamme tavut olemme nyt tarkistaneet käytettävissä olevat tavut. Tällä kertaa käytettävissä olevat tavut laskivat 3: lla.

skip () Menetelmä

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

 import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Tuotos

 Syöttövirta 5 tavun ohittamisen jälkeen: on tekstirivi tiedoston sisällä. 

Yllä olevassa esimerkissä olemme käyttäneet skip()menetelmää ohittaa 5 tavua tiedoston syöttövirrasta. Siten, tavut 'T', 'h', 'i', 's'ja ' 'ohitetaan tulo virta.

sulje () Menetelmä

Puskuroidun tulovirran sulkemiseksi voimme käyttää close()menetelmää. Kun close()menetelmä on kutsuttu, emme voi käyttää syötevirtaa tietojen lukemiseen.

Muut BufferedInputStreamin menetelmät

Menetelmät Kuvaukset
mark() merkitse sijainti syötevirrassa, johon tiedot on luettu
reset() palauttaa ohjauksen tulovirran pisteeseen, johon merkki asetettiin

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

Mielenkiintoisia artikkeleita...