Java BufferedInputStream (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai Java BufferedInputStream dan kaedahnya dengan bantuan contoh.

The BufferedInputStreamgolongan orang java.iopakej digunakan dengan aliran input lain untuk membaca data (dalam bait) dengan lebih cekap.

Ia meluaskan InputStreamkelas abstrak.

Kerja BufferedInputStream

Ini BufferedInputStreammengekalkan penyangga dalaman 8192 bait .

Semasa operasi membaca di BufferedInputStream, sebilangan bait dibaca dari cakera dan disimpan dalam penyangga dalaman. Dan dari bait penyangga dalaman dibaca secara individu.

Oleh itu, bilangan komunikasi ke cakera dikurangkan. Inilah sebabnya mengapa membaca bait lebih cepat menggunakan BufferedInputStream.

Buat BufferedInputStream

Untuk membuat BufferedInputStream, kita mesti mengimport java.io.BufferedInputStreampakej terlebih dahulu. Sebaik sahaja kami mengimport pakej di sini adalah bagaimana kita dapat membuat aliran input.

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

Dalam contoh di atas, kami telah membuat BufferdInputStreambuffer bernama dengan FileInputStreamfile bernama.

Di sini, penyangga dalaman mempunyai ukuran lalai 8192 bait. Namun, kita dapat menentukan ukuran penyangga dalaman juga.

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

Penyangga akan membantu membaca bait dari fail dengan lebih cepat.

Kaedah BufferedInputStream

The BufferedInputStreamkelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam InputStreamkelas.

baca () Kaedah

  • read() - membaca satu bait dari aliran input
  • read(byte() arr) - membaca bait dari aliran dan menyimpan dalam susunan yang ditentukan
  • read(byte() arr, int start, int length) - membaca bilangan bait sama dengan panjang dari aliran dan menyimpan dalam susunan yang ditentukan bermula dari kedudukan awal

Katakan kita mempunyai fail bernama input.txt dengan kandungan berikut.

 This is a line of text inside the file. 

Mari cuba baca fail menggunakan 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(); ) ) ) 

Pengeluaran

 Ini adalah sebaris teks di dalam fail. 

Dalam contoh di atas, kami telah membuat aliran input buffered bernama buffer bersama FileInputStream. Aliran input dihubungkan dengan input.txt fail .

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

Di sini, kami telah menggunakan read()kaedah untuk membaca pelbagai bait dari penyangga dalaman pembaca yang disangga.

tersedia () Kaedah

Untuk mendapatkan jumlah bait yang tersedia dalam aliran input, kita dapat menggunakan available()kaedahnya. Sebagai contoh,

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

Pengeluaran

 Byte yang tersedia pada awal: 39 Byte yang tersedia pada akhir: 36 

Dalam contoh di atas,

  1. Mula-mula kami menggunakan available()kaedah untuk memeriksa jumlah bait yang tersedia dalam aliran input.
  2. Kemudian, kami telah menggunakan read()kaedah 3 kali untuk membaca 3 bait dari aliran input.
  3. Sekarang, setelah membaca bait kami sekali lagi telah memeriksa bait yang ada. Kali ini bait yang tersedia menurun sebanyak 3.

melangkau () Kaedah

Untuk membuang dan melangkau bilangan bait yang ditentukan, kita boleh menggunakan skip()kaedahnya. Sebagai contoh,

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

Pengeluaran

 Aliran input setelah melangkau 5 bait: adalah sebaris teks di dalam fail. 

Dalam contoh di atas, kami telah menggunakan skip()kaedah untuk melangkau 5 bait dari aliran input fail. Oleh itu, bait 'T', 'h', 'i', 's'dan ' 'dilangkau dari aliran input.

tutup () Kaedah

Untuk menutup aliran input yang disangga, kita dapat menggunakan close()kaedahnya. Setelah close()kaedah dipanggil, kami tidak dapat menggunakan aliran input untuk membaca data.

Kaedah Lain BufferedInputStream

Kaedah Penerangan
mark() tandakan kedudukan dalam aliran input sehingga data telah dibaca
reset() mengembalikan kawalan ke titik dalam aliran input di mana tanda itu ditetapkan

Untuk mengetahui lebih lanjut, lawati Java BufferdInputStream (dokumentasi Java rasmi).

Artikel menarik...