Lớp Java BufferedOutputStream

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Java BufferedOutputStream và các phương thức của nó với sự trợ giúp của các ví dụ.

Các BufferedOutputStreamlớp của java.iogói phần mềm được sử dụng với các dòng sản lượng khác để ghi dữ liệu (tính theo byte) một cách hiệu quả hơn.

Nó mở rộng OutputStreamlớp trừu tượng.

Hoạt động của BufferedOutputStream

Các BufferedOutputStreamduy trì một nội bộ đệm của 8192 byte .

Trong quá trình ghi, các byte được ghi vào bộ đệm bên trong thay vì đĩa. Khi bộ đệm được lấp đầy hoặc luồng bị đóng, toàn bộ bộ đệm sẽ được ghi vào đĩa.

Do đó, số lượng thông tin liên lạc đến đĩa bị giảm. Đây là lý do tại sao viết byte nhanh hơn khi sử dụng BufferedOutputStream.

Tạo một dòng BufferedOutputStream

Để tạo một BufferedOutputStreamjava.io.BufferedOutputStreamtrước tiên chúng ta phải nhập gói. Khi chúng tôi nhập gói ở đây là cách chúng tôi có thể tạo luồng đầu ra.

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

// Creates a BufferedOutputStream
BufferedOutputStream buffer = new BufferOutputStream(file);

Trong ví dụ trên, chúng ta đã tạo một vùng đệmBufferdOutputStream được đặt tên với tệp được đặt tên .FileOutputStream

Ở đây, bộ đệm bên trong có kích thước mặc định là 8192 byte. Tuy nhiên, chúng tôi cũng có thể chỉ định kích thước của bộ đệm bên trong.

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

Bộ đệm sẽ giúp ghi byte vào tệp nhanh hơn.

Phương thức BufferedOutputStream

Các BufferedOutputStreamlớp học cung cấp triển khai cho các phương pháp khác nhau trong OutputStreamlớp.

viết phương pháp

  • write() – writes a single byte to the internal buffer of the output stream
  • write(byte[] array) – writes the bytes from the specified array to the output stream
  • write(byte[] arr, int start, int length) – writes the number of bytes equal to length to the output stream from an array starting from the position start

Ví dụ: BufferedOutputStream để ghi dữ liệu vào tệp

import java.io.FileOutputStream;
import java.io.BufferedOutputStream;

public class Main {
    public static void main(String[] args) {

        String data = "This is a line of text inside the file";

        try {
            // Creates a FileOutputStream
            FileOutputStream file = new FileOutputStream("output.txt");

            // Creates a BufferedOutputStream
            BufferedOutputStream output = new BufferedOutputStream(file);

            byte[] array = data.getBytes();

            // Writes data to the output stream
            output.write(array);
            output.close();
        }

        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Trong ví dụ trên, chúng tôi đã tạo một luồng đầu ra được đệm có tên là đầu ra cùng với FileOutputStream. Luồng đầu ra được liên kết với tệp output.txt .

FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream output = new BufferedOutputStream(file);

Để ghi dữ liệu vào tệp, chúng tôi đã sử dụng write()phương pháp.

Ở đây khi chúng tôi chạy chương trình, tệp output.txt chứa nội dung sau.

This is a line of text inside the file.

Lưu ý : getBytes()Phương thức được sử dụng trong chương trình chuyển đổi một chuỗi thành một mảng byte.

phương thức flush ()

Để xóa bộ đệm bên trong, chúng ta có thể sử dụng flush()phương pháp. Phương thức này buộc luồng đầu ra ghi tất cả dữ liệu có trong bộ đệm vào tệp đích. Ví dụ,

import java.io.FileOutputStream;
import java.io.BufferedOutputStream;

public class Main {
    public static void main(String[] args) {

        String data = "This is a demo of the flush method";

        try {
            // Creates a FileOutputStream
            FileOutputStream file = new FileOutputStream(" flush.txt");

            // Creates a BufferedOutputStream
            BufferedOutputStream buffer = new BufferedOutputStream(file);

            // Writes data to the output stream
            buffer.write(data.getBytes());

            // Flushes data to the destination
            buffer.flush();
            System.out.println("Data is flushed to the file.");
            buffer.close();
        }

        catch(Exception e) {
            e.getStackTrace();
        }
    }
}

Đầu ra

Data is flushed to the file.

Khi chúng tôi chạy chương trình, tệp flush.txt được lấp đầy bằng văn bản được biểu thị bằng dữ liệu chuỗi .

phương thức close ()

Để đóng luồng đầu ra được đệm, chúng ta có thể sử dụng close()phương pháp. Khi phương thức được gọi, chúng ta không thể sử dụng luồng đầu ra để ghi dữ liệu.

Để tìm hiểu thêm, hãy truy cập Java BufferedOutputStream (tài liệu Java chính thức) .









Gõ tìm kiếm nhanh...