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

lớp BufferedWriter của gói java.io có thể được sử dụng với các tác giả(Writer) khác để ghi dữ liệu (bằng ký tự) hiệu quả hơn.

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

1. Hoạt động của BufferedWriter

Các BufferedWriter duy trì một nội đệm 8192 ký tự .

Trong quá trình ghi, các ký tự được ghi vào bộ đệm bên trong thay vì đĩa. Khi bộ đệm được lấp đầy hoặc bộ ghi được đóng, toàn bộ ký tự trong 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 sử dụng các ký tự nhanh hơn BufferedWriter.

2. Tạo một BufferedWriter

Để tạo một BufferedWriter, trước tiên chúng ta phải nhập gói java.io.BufferedWriter. Sau khi chúng tôi nhập gói ở đây là cách chúng tôi có thể tạo trình ghi đệm.

// Creates a FileWriter
FileWriter file = new FileWriter(String name);

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

Trong ví dụ trên, chúng tôi đã tạo ra một BufferedWriter tên đệm với cái FileWriter tên tập tin.

Ở đây, bộ đệm bên trong của BufferedWriter có kích thước mặc định là 8192 ký tự. 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 BufferedWriter with specified size internal buffer
BufferedWriter buffer = new BufferedWriter(file, int size);

Bộ đệm sẽ giúp ghi các ký tự vào tệp hiệu quả hơn.

2. Các phương thức của BufferedWriter

lớp BufferedWriter cung cấp triển khai cho các phương thức khác nhau hiện diện trong Writer.

2.1 phương thức viết

  • write() – ghi một ký tự vào bộ đệm bên trong của người viết
  • write(char[] array) – ghi các ký tự từ mảng được chỉ định vào trình viết
  • write(String data) – ghi chuỗi được chỉ định cho người viết

2.2 Ví dụ: BufferedWriter để ghi dữ liệu vào một tệp

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.io.FileWriter;
import java.io.BufferedWriter;

public class Main {

  public static void main(String args[]) {

    String data = "This is the data in the output file";

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

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

      // Writes the string to the file
      output.write(data);

      // Closes the writer
      output.close();
    }

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

Trong ví dụ trên, chúng tôi đã tạo một trình viết được đệm có tên đầu ra cùng với FileWriter. Trình ghi trong bộ đệm được liên kết với tệp output.txt .

FileWriter file = new FileWriter("output.txt");
BufferedWriter output = new BufferedWriter(file);

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

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

This is a line of text inside the file.

2.3 phương thức flush()

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

Ví dụ, giả sử chúng ta có một tệp trống có tên là output.txt .

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.io.FileWriter;
import java.io.BufferedWriter;

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

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

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

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

      // Writes data to the file
      output.write(data);

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

      output.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 output.txt được điền bằng văn bản được đại diện bởi chuỗi dữ liệu.

2.4 phương thức close()

Để đóng trình ghi trong bộ đệm, chúng ta có thể sử dụng phương thức close() này. Khi phương thức close()được gọi, chúng ta không thể sử dụng trình viết để ghi dữ liệu.

3. Các phương thức khác của BufferedWriter

phương thứcSự miêu tả
newLine()chèn một dòng mới cho người viết
append()chèn ký tự được chỉ định cho người viết hiện tại

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

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!