Ebben az oktatóanyagban példák segítségével megismerhetjük a Java BufferedInputStream-et és annak módszereit.
A csomag BufferedInputStreamosztályát java.iomás bemeneti folyamokkal használják az adatok hatékonyabb (bájtokban) olvasására.
Kiterjeszti az InputStreamabsztrakt osztályt.

A BufferedInputStream működése
A BufferedInputStreamfenntartja belső puffer 8192 byte .
A beolvasási művelet során BufferedInputStreamegy darab bájt olvasható le a lemezről, és a belső pufferben tárolódik. És a belső pufferből a bájtokat egyenként olvassák le.
Ezért csökken a lemezre irányuló kommunikáció száma. Ezért gyorsabb a bájtok olvasása a BufferedInputStream.
Hozzon létre egy BufferedInputStream-et
A létrehozásához először BufferedInputStreamimportálnunk kell a java.io.BufferedInputStreamcsomagot. A csomag importálása után itt hozhatjuk létre a bemeneti adatfolyamot.
 // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); 
A fenti példában létrehoztunk egy BufferdInputStreammegnevezett puffert a FileInputStreammegnevezett fájllal.
Itt a belső puffer alapértelmezett mérete 8192 bájt. Megadhatjuk azonban a belső puffer méretét is.
 // Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size); 
A puffer segít gyorsabban olvasni a bájtokat a fájlokból.
A BufferedInputStream módszerei
Az BufferedInputStreamosztály megvalósításokat biztosít az InputStreamosztályban jelen lévő különböző módszerek számára .
read () módszer
read()- egyetlen bájtot olvas be a bemeneti adatfolyambólread(byte() arr)- beolvassa a bájtokat az adatfolyamból és tárolja a megadott tömbbenread(byte() arr, int start, int length)- beolvassa a bájtok számát, amely megegyezik a folyam hosszával, és tárolja a megadott tömbben a pozíció kezdetétől kezdődően
Tegyük fel, hogy van egy input.txt nevű fájlunk a következő tartalommal.
 This is a line of text inside the file. 
Próbáljuk meg elolvasni a fájlt a 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(); ) ) ) 
Kimenet
Ez egy szövegsor a fájl belsejében.
A fenti példában létrehoztunk egy puffer nevű, puffer nevű bemeneti folyamot FileInputStream. A bemeneti adatfolyam az input.txt fájlhoz van kapcsolva .
 FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); 
Itt azt a read()módszert használtuk, hogy a pufferolt olvasó belső pufferéből egy bájtömböt olvassunk.
elérhető () módszer
Ahhoz, hogy megkapjuk a rendelkezésre álló bájtok számát a bemeneti adatfolyamban, használhatjuk a available()módszert. Például,
 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(); ) ) ) 
Kimenet
Elérhető bájtok az elején: 39 Elérhető bájtok a végén: 36
A fenti példában
- Először a 
available()módszer segítségével ellenőrizzük a rendelkezésre álló bájtok számát a bemeneti adatfolyamban. - Ezután 
read()háromszor használtuk a módszert 3 bájt beolvasására a bemeneti adatfolyamból. - A bájtok elolvasása után ismét ellenőrizzük a rendelkezésre álló bájtokat. Ezúttal a rendelkezésre álló bájtok 3-mal csökkentek.
 
skip () módszer
A megadott számú bájt elvetéséhez és kihagyásához használhatjuk a skip()módszert. Például,
 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(); ) ) ) 
Kimenet
Bemeneti adatfolyam 5 bájt kihagyása után: egy szövegsor a fájl belsejében.
A fenti példában azt a skip()módszert alkalmaztuk, hogy kihagyjunk 5 bájtot a fájl bemeneti adatfolyamából. Ennélfogva, a bájt 'T', 'h', 'i', 's'és ' 'átugorja a bemeneti folyam.
bezár () módszer
A pufferelt bemeneti adatfolyam bezárásához használhatjuk a close()módszert. A close()módszer meghívása után nem használhatjuk a bemeneti adatfolyamot az adatok kiolvasására.
A BufferedInputStream egyéb módszerei
| Mód | Leírások | 
|---|---|
mark()  |  jelölje be a bemeneti adatfolyamban azt a helyet, amelyre az adatokat beolvasták | 
reset()  |  visszaadja a vezérlést a bemeneti adatfolyam azon pontjára, ahol a jelölést beállították | 
További információkért látogasson el a Java BufferdInputStream oldalra (hivatalos Java dokumentáció).








