Java BufferedInputStream (koos näidetega)

Selles õpetuses õpime näidete abil Java BufferedInputStreami ja selle meetodeid.

BufferedInputStreamKlassi java.iopaketi kasutatakse koos teiste sisendid andmete lugemiseks (baitides) efektiivsemalt.

See laiendab InputStreamabstraktset klassi.

BufferedInputStreami töötamine

BufferedInputStreamVäidab sisemine puhver 8192 baiti .

Aastal lugemise ajal loetakse BufferedInputStreamkettalt baitide hulk ja salvestatakse sisemisse puhvrisse. Sisemisest puhverbaidist loetakse eraldi.

Seega väheneb kettale suhtlemise arv. Seetõttu on baitide lugemine kiirem BufferedInputStream.

Looge BufferedInputStream

A loomiseks BufferedInputStreampeame java.io.BufferedInputStreamesmalt pakendi importima . Kui pakett on siia imporditud, saame sisendvoo luua.

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

Ülaltoodud näites oleme loonud nimega failiga BufferdInputStreamnimelise puhvri FileInputStream.

Siin on sisepuhvri vaikimisi suurus 8192 baiti. Siiski võime täpsustada ka sisemise puhvri suuruse.

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

Puhver aitab failidest faile kiiremini lugeda.

BufferedInputStreami meetodid

BufferedInputStreamTasemega näeb implementation erinevaid meetodeid sisalduse funktsioon InputStreamtasemega.

loe () meetod

  • read() - loeb sisevoolust ühe baidi
  • read(byte() arr) - loeb voost baidid ja salvestab määratud massiivi
  • read(byte() arr, int start, int length) - loeb voo pikkusega võrdse baitide arvu ja salvestab määratud massiivi alates positsiooni algusest

Oletame, et meil on järgmise sisuga fail nimega input.txt .

 This is a line of text inside the file. 

Proovime faili lugeda 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(); ) ) ) 

Väljund

 See on failirea tekstirida. 

Ülaltoodud näites oleme loonud koos puhverdatud sisendvoo nimega puhver FileInputStream. Sisendvoog on seotud failiga input.txt .

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

Siin oleme kasutanud read()meetodit baitide massiivi lugemiseks puhverdatud lugeja sisemisest puhvrist.

saadaval () meetod

Sisendvoos saadaolevate baitide arvu saamiseks saame available()meetodit kasutada . Näiteks,

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

Väljund

 Alguses saadaolevad baidid: 39 saadaval olevad baidid: 36 

Ülaltoodud näites

  1. Kõigepealt kasutasime available()meetodit sisendvoos saadaolevate baitide arvu kontrollimiseks.
  2. Seejärel oleme read()meetodit 3 korda kasutanud, et lugeda 3 baiti sisendvoost.
  3. Nüüd, pärast baitide lugemist, oleme uuesti kontrollinud saadaolevaid baite. Seekord vähenesid saadaolevad baidid 3 võrra.

skip () meetod

Määratud baitide arvu ära viskamiseks ja vahele jätmiseks saame seda skip()meetodit kasutada . Näiteks,

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

Väljund

 Sisendvoog pärast 5 baiti vahele jätmist: on failirea tekstirida. 

Ülaltoodud näites oleme skip()meetodi abil 5 baiti vahele jätnud faili sisendvoost. Seega baiti 'T', 'h', 'i', 's'ja ' 'jäetakse vahele lähtekohast sisendivoost.

close () meetod

Puhverdatud sisendvoo sulgemiseks saame kasutada close()meetodit. Kui close()meetod on välja kutsutud, ei saa me andmete lugemiseks sisendvoogu kasutada.

Muud puhverdatud sisendvoo meetodid

Meetodid Kirjeldused
mark() märkige sisendvoos asukoht, kuhu andmed on loetud
reset() tagastab juhtelemendi sisendvoos punkti, kuhu märk oli seatud

Lisateabe saamiseks külastage Java BufferdInputStream'i (ametlik Java dokumentatsioon).

Huvitavad Artiklid...