openplanning

Hướng dẫn và ví dụ Java BufferedWriter

  1. BufferedWriter
  2. Examples

1. BufferedWriter

BufferedWriter là một lớp con của Writer, được sử dụng để đơn giản hoá việc ghi văn bản vào một luồng đầu ra ký tự (character output stream), và nâng cao hiệu suất của chương trình.
Nguyên tắc hoạt động của BufferedWriter giống như hình minh hoạ dưới đây:
BufferedWriter gói bên trong nó một đối tượng Writer, đố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).
BufferedWrite 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(char[]),... để đả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 Writer và giải phóng buffer. Bạn cũng có thể gọi phương thức BufferedWriter.flush() để chủ động đẩy tất cả dữ liệu trên buffer sang Writer và giải phóng buffer. Dữ liệu cũng được đẩy từ buffer sang Writer khi gọi phương thức BufferedWriter.close().
Cái gọi là "buffer" được đề cập ở phía trên thực tế chỉ là một mảng các ký tự. Bạn có thể chỉ định kích thước của mảng này khi khởi tạo đối tượng BufferedWriter.
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.
BufferedWriter​ constructors
BufferedWriter​(Writer out)     

BufferedWriter​(Writer out, int sz)
  • Contructor BufferedWriter(Writer,int) tạo ra một đối tượng BufferedWriter với mảng buffer có kích thước được chỉ định.
  • Contructor BufferedWriter(Writer) tạo ra một đối tượng BufferedWriter với mảng buffer có kích thước mặc định (sz = 8192).

2. Examples

Ví dụ: Tạo một BufferedWriter với kích thước mảng buffer16384. Chú ý: Kiểu dữ liệu char của Java2 bytes. Điều đó có nghĩa là buffer này có dung lượng 32786 bytes (32 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.

// Create Writer to write a file.
Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

// Create a BufferedWriter with buffer array size of 16384 (32786 bytes = 32 KB).
BufferedWriter br = new BufferedWriter(writer, 16384);
Tạo một BufferedWriter với kích thước mảng buffer mặc định (8192), tương đương với 16384 bytes (16 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.

// Create Writer to write a file.
Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

// Create a BufferedWriter with default buffer array size of 8192 (16384 bytes = 16 KB).
BufferedWriter br = new BufferedWriter(writer);
Code đầy đủ của ví dụ:
BufferedWriterEx1.java
package org.o7planning.bufferedwriter.ex;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;

public class BufferedWriterEx1 {

    public static void main(String[] args) throws IOException {
        File outFile = new File("/Volumes/Data/test/outfile.txt");
        
        outFile.getParentFile().mkdirs(); // Create parent folder.
        
        // Create Writer to write a file.
        Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

        // Create a BufferedWriter with buffer array size of 16384 (32786 bytes = 32 KB).
        BufferedWriter br = new BufferedWriter(writer, 16384);
    
        br.write("Line 1");
        br.newLine();  
        br.write("Line 2");
        br.flush();
        
        br.newLine();
        br.write("Line 3");
        
        br.close();
    }
}
Output:
outfile.txt
Line 1
Line 2
Line 3

Các hướng dẫn Java IO

Show More