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 BufferedOutputStream
lớp của java.io
gó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 OutputStream
lớp trừu tượng.
Hoạt động của BufferedOutputStream
Các BufferedOutputStream
duy 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 BufferedOutputStream
, java.io.BufferedOutputStream
trướ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 BufferedOutputStream
lớp học cung cấp triển khai cho các phương pháp khác nhau trong OutputStream
lớp.
viết phương pháp
write()
– writes a single byte to the internal buffer of the output streamwrite(byte[] array)
– writes the bytes from the specified array to the output streamwrite(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) .