Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Kelas Java BufferedInputStream

Kelas Java BufferedInputStream

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

BufferedInputStream kelas java.io package digunakan dengan aliran input lain untuk membaca data (dalam byte) dengan lebih efisien.

Ini memperluas InputStream kelas abstrak.


Bekerja BufferedInputStream

BufferedInputStream mempertahankan buffer internal sebesar 8192 byte .

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

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


Buat BufferedInputStream

Untuk membuat BufferedInputStream , kita harus mengimpor java.io.BufferedInputStream paket dulu. Setelah kami mengimpor paket, inilah cara kami membuat aliran input.

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

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

Pada contoh di atas, kita telah membuat BufferdInputStream bernama penyangga dengan FileInputStream bernama file .

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

penyangga akan membantu membaca byte dari file dengan lebih cepat.


Metode BufferedInputStream

BufferedInputStream class menyediakan implementasi untuk berbagai metode yang ada di InputStream kelas.

read() Metode

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

This is a line of text inside the file.

Pada contoh di atas, kami telah membuat aliran input buffer bernama buffer bersama dengan FileInputStream . Aliran input ditautkan dengan file input.txt .

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

Di sini, kami telah menggunakan read() metode untuk membaca array byte dari buffer internal pembaca buffer.


Metode yang tersedia()

Untuk mendapatkan jumlah byte yang tersedia di aliran input, kita dapat menggunakan available() metode. Misalnya,

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

Available bytes at the beginning: 39
Available bytes at the end: 36

Pada contoh di atas,

  1. Pertama kita menggunakan available() metode 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 melewati jumlah byte yang ditentukan, kita dapat menggunakan skip() metode. Misalnya,

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

Input stream after skipping 5 bytes: is a line of text inside the file.

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


close() Metode

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


Metode Lain BufferedInputStream

Metode Deskripsi
mark() menandai posisi di aliran input hingga data yang telah dibaca
reset() mengembalikan kontrol ke titik di aliran input tempat tanda ditetapkan

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


java

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Kelas Statis Bersarang Java
  4. Kelas Anonim Java
  5. Kelas Tunggal Jawa
  6. Refleksi Jawa
  7. Kelas Java ObjectOutputStream
  8. Kelas Java BufferedReader
  9. Java Generik
  10. Kelas File Java