Java BufferedInputStream (Dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang Java BufferedInputStream dan metodenya dengan bantuan contoh.

The BufferedInputStreamkelas dari java.iopaket digunakan dengan aliran masukan lain untuk membaca data (dalam byte) yang lebih efisien.

Ini memperluas InputStreamkelas abstrak.

Bekerja dari BufferedInputStream

The BufferedInputStreammempertahankan internal penyangga 8192 byte .

Selama operasi pembacaan di BufferedInputStream, sekumpulan byte dibaca dari disk dan disimpan di buffer internal. Dan dari byte buffer internal dibaca satu per satu.

Karenanya, jumlah komunikasi ke disk berkurang. Inilah sebabnya mengapa membaca byte lebih cepat menggunakan BufferedInputStream.

Buat BufferedInputStream

Untuk membuat BufferedInputStream, kita harus mengimpor java.io.BufferedInputStreampaketnya terlebih dahulu. Setelah kami mengimpor paket di sini adalah bagaimana kami 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, buffer internal memiliki ukuran default 8192 byte. Namun, kami juga dapat menentukan ukuran buffer internal.

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

Buffer akan membantu membaca byte dari file dengan lebih cepat.

Metode BufferedInputStream

The BufferedInputStreamkelas menyediakan implementasi untuk metode yang berbeda hadir di InputStreamkelas.

read () Metode

  • read() - membaca satu byte dari aliran input
  • read(byte() arr) - membaca byte dari aliran dan menyimpannya dalam array yang ditentukan
  • read(byte() arr, int start, int length) - membaca jumlah byte yang sama dengan panjang dari aliran dan menyimpannya dalam array yang ditentukan mulai dari posisi awal

Misalkan kita memiliki file bernama input.txt dengan konten berikut.

 This is a line of text inside the file. 

Mari kita coba membaca file 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(); ) ) ) 

Keluaran

 Ini adalah baris teks di dalam file. 

Dalam contoh di atas, kami telah membuat aliran input buffer bernama buffer bersama dengan FileInputStream. Arus input dihubungkan dengan file input.txt .

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

Di sini, kami telah menggunakan read()metode untuk membaca larik byte dari buffer internal pembaca yang di-buffer.

tersedia () Metode

Untuk mendapatkan jumlah byte yang tersedia di input stream, kita bisa menggunakan available()metode ini. 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(); ) ) ) 

Keluaran

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

Dalam contoh di atas,

  1. Kami pertama kali menggunakan available()metode ini untuk memeriksa jumlah byte yang tersedia di aliran input.
  2. Kemudian, kami telah menggunakan read()metode 3 kali untuk membaca 3 byte dari aliran input.
  3. Sekarang, setelah membaca byte, kami kembali memeriksa byte yang tersedia. Kali ini byte yang tersedia berkurang 3.

lewati () Metode

Untuk membuang dan melewatkan jumlah byte yang ditentukan, kita dapat menggunakan skip()metode ini. 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(); ) ) ) 

Keluaran

 Aliran input setelah melewati 5 byte: adalah baris teks di dalam file. 

Dalam contoh di atas, kami telah menggunakan skip()metode untuk melewati 5 byte dari aliran input file. Oleh karena itu, byte 'T', 'h', 'i', 's'dan ' 'yang dilewati dari input stream.

close () Metode

Untuk menutup aliran input buffer, kita dapat menggunakan close()metode. Setelah close()metode dipanggil, kita tidak dapat menggunakan aliran input untuk membaca data.

Metode Lain BufferedInputStream

Metode Deskripsi
mark() tandai posisi dalam aliran input yang datanya telah dibaca
reset() mengembalikan kontrol ke titik dalam aliran input tempat tanda ditetapkan

Untuk mempelajari lebih lanjut, kunjungi Java BufferdInputStream (dokumentasi resmi Java).

Artikel yang menarik...