Java BufferedInputStream (s primjerima)

U ovom uputstvu uz primjere ćemo naučiti o Java BufferedInputStream i njegovim metodama.

BufferedInputStreamRazred java.iopaket se koristi s drugim ulaznim tokovima za čitanje podataka (u bajtovima) učinkovitije.

Proširuje InputStreamapstraktnu klasu.

Rad BufferedInputStreama

BufferedInputStreamOdržava unutarnju tampon od 8192 bajtova .

Tijekom operacije čitanja BufferedInputStream, dio bajtova očitava se s diska i pohranjuje u unutarnji međuspremnik. A iz internog međuspremnika bajtovi se očitavaju pojedinačno.

Stoga se smanjuje broj komunikacije s diskom. Zbog toga je čitanje bajtova brže pomoću BufferedInputStream.

Stvorite BufferedInputStream

Da bismo stvorili BufferedInputStream, prvo moramo uvesti java.io.BufferedInputStreampaket. Jednom kada uvozimo paket, evo kako možemo stvoriti ulazni tok.

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

U gornjem primjeru stvorili smo BufferdInputStreamimenovani međuspremnik s FileInputStreamimenovanom datotekom.

Ovdje unutarnji međuspremnik ima zadanu veličinu od 8192 bajta. Međutim, možemo odrediti i veličinu unutarnjeg međuspremnika.

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

Me uspremnik pomoći će bržem čitanju bajtova iz datoteka.

Metode puferiranog ulaznog toka

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

read () metoda

  • read() - čita jedan bajt iz ulaznog toka
  • read(byte() arr) - čita bajtove iz streama i pohranjuje u navedeni niz
  • read(byte() arr, int start, int length) - čita broj bajtova jednak duljini iz streama i pohranjuje u navedeni niz počevši od početka položaja

Pretpostavimo da imamo datoteku koja se zove input.txt sa sljedećim sadržajem.

 This is a line of text inside the file. 

Pokušajmo datoteku pročitati pomoću 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(); ) ) ) 

Izlaz

 Ovo je redak teksta unutar datoteke. 

U gornjem primjeru stvorili smo međuspremnik ulaznog toka pod nazivom buffer zajedno sa FileInputStream. Ulazni tok povezan je s datotekom input.txt .

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

Ovdje smo read()metodu koristili za čitanje niza bajtova iz unutarnjeg međuspremnika međuspremnika.

dostupna () metoda

Da bismo dobili broj dostupnih bajtova u ulaznom toku, možemo koristiti available()metodu. Na primjer,

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

Izlaz

 Dostupni bajtovi na početku: 39 Dostupni bajtovi na kraju: 36 

U gornjem primjeru,

  1. available()Metodu prvo koristimo za provjeru broja dostupnih bajtova u ulaznom toku.
  2. Zatim smo read()metodu koristili 3 puta za čitanje 3 bajta iz ulaznog toka.
  3. Sada, nakon čitanja bajtova, ponovno smo provjerili dostupne bajtove. Ovaj put su se dostupni bajtovi smanjili za 3.

preskoči () Metoda

Da bismo odbacili i preskočili navedeni broj bajtova, možemo se poslužiti skip()metodom. Na primjer,

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

Izlaz

 Ulazni tok nakon preskakanja 5 bajtova: redak je teksta unutar datoteke. 

U gornjem primjeru koristili smo skip()metodu kako bismo preskočili 5 bajtova iz ulaznog toka datoteke. Dakle, bajtova 'T', 'h', 'i', 's'i ' 'preskaču s ulaznim signalom.

close () Metoda

Da bismo zatvorili me uspremljeni ulazni tok, možemo koristiti close()metodu. Jednom kada je close()metoda pozvana, ne možemo koristiti ulazni tok za čitanje podataka.

Ostale metode puferiranog ulaznog toka

Metode Opisi
mark() označite 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

Da biste saznali više, posjetite Java BufferdInputStream (službena Java dokumentacija).

Zanimljivi članci...