Java BufferedInputStream (példákkal)

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ól
  • read(byte() arr) - beolvassa a bájtokat az adatfolyamból és tárolja a megadott tömbben
  • read(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

  1. 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.
  2. Ezután read()háromszor használtuk a módszert 3 bájt beolvasására a bemeneti adatfolyamból.
  3. 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ó).

érdekes cikkek...