Hướng dẫn và ví dụ Java BufferedOutputStream
1. BufferedOutputStream
BufferedOutputStream là một lớp con của OutputStream, được sử dụng để đơn giản hoá việc ghi văn bản vào một luồng đầu ra nhị phân (binary output stream), và nâng cao hiệu suất của chương trình.
- OutputStream
- ByteArrayOutputStream
- ObjectOutputStream
- PrintStream
- FileOutputStream
- FilterOutputStream
- PipedOutputStream
- DataOutputStream
- InflaterOutputStream
- DigestOutputStream
- DeflaterOutputStream
- CipherOutputStream
- CheckedOutputStream
Nguyên tắc hoạt động của BufferedOutputStream giống như hình minh hoạ dưới đây:
BufferedOutputStream gói bên trong nó một đối tượng OutputStream, đối tượng này làm nhiệm vụ ghi dữ liệu vào mục tiêu (chẳng hạn file).
BufferedOutputStream ghi đè (override) các phương thức được thừa kế từ lớp cha của nó, chẳng hạn như write(), write(byte[]),... để đảm bảo rằng dữ liệu sẽ được ghi vào buffer chứ không phải ghi vào mục tiêu (chẳng hạn file). Nhưng khi buffer đầy, tất cả dữ liệu trên buffer sẽ được đẩy vào OutputStream và giải phóng buffer. Bạn cũng có thể gọi phương thức BufferedOutputStream.flush() để chủ động đẩy tất cả dữ liệu trên buffer sang OutputStream và giải phóng buffer. Dữ liệu cũng được đẩy từ buffer sang OutputStream khi gọi phương thức BufferedOutputStream.close().
Cái gọi là "buffer" được đề cập ở phía trên thực tế chỉ là một mảng byte. Bạn có thể chỉ định kích thước của mảng này khi khởi tạo đối tượng BufferedOutputStream.
Các dữ liệu được ghi tạm vào buffer sẽ giảm thiểu việc ghi liên tục với mục tiêu (chẳng hạn file trên ổ cứng) vì vậy nâng cao hiệu xuất của chương trình.
BufferedOutputStream constructors
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
- Contructor BufferedOutputStream(OutputStream,int) tạo ra một đối tượng BufferedOutputStream với mảng buffer có kích thước được chỉ định.
- Contructor BufferedOutputStream(OutputStream) tạo ra một đối tượng BufferedOutputStream với mảng buffer có kích thước mặc định (size = 8192).
2. Examples
Ví dụ: Tạo một BufferedOutputStream với kích thước mảng buffer là 16384. Điều đó có nghĩa là buffer này có dung lượng 16384 bytes (16 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with buffer array size of 16384 (16384 bytes = 16 KB).
BufferedOutputStream br = new BufferedOutputStream(os, 16384);
Tạo một BufferedOutputStream với kích thước mảng buffer mặc định (8192), tương đương với 8192 bytes (8 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with default buffer array size of 8192 (8192 bytes = 8 KB).
BufferedOutputStream br = new BufferedOutputStream(os);
Code đầy đủ của ví dụ:
BufferedOutputStreamEx1.java
package org.o7planning.bufferedoutputstream.ex;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class BufferedOutputStreamEx1 {
private static final String file_path = "/Volumes/Data/test/outfile.txt";
public static void main(String[] args) throws IOException {
File outFile = new File(file_path);
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with buffer array size of 16384 (16384 bytes = 16 KB).
BufferedOutputStream br = new BufferedOutputStream(os, 16384);
br.write("JP".getBytes("UTF-8"));
br.write('\n');
br.write("日本".getBytes("UTF-8"));
br.write('\n');
br.flush();
br.write('\n');
br.write("八洲".getBytes("UTF-8"));
br.close();
}
}
Output:
outfile.txt
JP
日本
八洲
Các hướng dẫn Java IO
- Hướng dẫn và ví dụ Java CharArrayWriter
- Hướng dẫn và ví dụ Java FilterReader
- Hướng dẫn và ví dụ Java FilterWriter
- Hướng dẫn và ví dụ Java PrintStream
- Hướng dẫn và ví dụ Java BufferedReader
- Hướng dẫn và ví dụ Java BufferedWriter
- Hướng dẫn và ví dụ Java StringReader
- Hướng dẫn và ví dụ Java StringWriter
- Hướng dẫn và ví dụ Java PipedReader
- Hướng dẫn và ví dụ Java LineNumberReader
- Hướng dẫn và ví dụ Java PushbackReader
- Hướng dẫn và ví dụ Java PrintWriter
- Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
- Hướng dẫn sử dụng luồng vào ra ký tự trong Java
- Hướng dẫn và ví dụ Java BufferedOutputStream
- Hướng dẫn và ví dụ Java ByteArrayOutputStream
- Hướng dẫn và ví dụ Java DataOutputStream
- Hướng dẫn và ví dụ Java PipedInputStream
- Hướng dẫn và ví dụ Java OutputStream
- Hướng dẫn và ví dụ Java ObjectOutputStream
- Hướng dẫn và ví dụ Java PushbackInputStream
- Hướng dẫn và ví dụ Java SequenceInputStream
- Hướng dẫn và ví dụ Java BufferedInputStream
- Hướng dẫn và ví dụ Java Reader
- Hướng dẫn và ví dụ Java Writer
- Hướng dẫn và ví dụ Java FileReader
- Hướng dẫn và ví dụ Java FileWriter
- Hướng dẫn và ví dụ Java CharArrayReader
- Hướng dẫn và ví dụ Java ByteArrayInputStream
- Hướng dẫn và ví dụ Java DataInputStream
- Hướng dẫn và ví dụ Java ObjectInputStream
- Hướng dẫn và ví dụ Java InputStreamReader
- Hướng dẫn và ví dụ Java OutputStreamWriter
- Hướng dẫn và ví dụ Java InputStream
- Hướng dẫn và ví dụ Java FileInputStream
Show More
- Hướng dẫn lập trình Java Servlet/JSP
- Các hướng dẫn Java New IO
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java Oracle ADF
- Các hướng dẫn Java Collections Framework
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các thư viện mã nguồn mở Java
- Các hướng dẫn Java Web Services
- Các hướng dẫn Struts2 Framework
- Các hướng dẫn Spring Boot