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

lớp OutputStreamWriter của gói java.io có thể được sử dụng để chuyển đổi dữ liệu ở dạng character vào dữ liệu trong byte mẫu.

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

lớp OutputStreamWriter làm việc với dòng đầu ra khác. Nó còn được gọi là cầu nối giữa các luồng byte và các luồng ký tự. Điều này là do OutputStreamWriter chuyển đổi các ký tự của nó thành byte.

Ví dụ, một số ký tự yêu cầu 2 byte được lưu trữ trong bộ nhớ. Để ghi dữ liệu như vậy, chúng ta có thể sử dụng trình viết luồng đầu ra chuyển đổi ký tự thành các byte tương ứng và lưu trữ các byte lại với nhau.

1. Tạo một OutputStreamWriter

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

// Creates an OutputStream
FileOutputStream file = new FileOutputStream(String path);

// Creates an OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

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

Ở đây, chúng tôi đang sử dụng mã hóa ký tự mặc định để ghi ký tự vào luồng đầu ra.

Tuy nhiên, chúng ta có thể chỉ định kiểu mã hóa ký tự ( UTF8 hoặc UTF16 ) được sử dụng để ghi dữ liệu.

// Creates an OutputStreamWriter specifying the character encoding
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);

Ở đây, chúng tôi đã sử dụng lớp Charset để chỉ định kiểu mã hóa ký tự.

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

lớp OutputStreamWriter cung cấp triển khai cho các phương thức khác nhau trình bày trong lớp Writer.

2.1 phương thức viết

  • write() – viết một ký tự cho nhà văn
  • 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ụ: OutputStreamWriter để ghi dữ liệu vào một tệp

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

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 an OutputStreamWriter
      OutputStreamWriter output = new OutputStreamWriter(file);

      // Writes 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 đọc luồng đầu ra bằng luồng xuất tệp. Trình đọc luồng đầu ra được liên kết với tệp output.txt .

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

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

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

This is a line of text inside the file.

3. Phương thức getEncoding()

phương thức getEncoding() có thể được sử dụng để có được các loại mã hóa được sử dụng để ghi dữ liệu vào dòng đầu ra. Ví dụ,

import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;

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

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

      // Creates an output stream reader with default encoding
      OutputStreamWriter output1 = new OutputStreamWriter(file);

      // Creates an output stream reader specifying the encoding
      OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8"));

      // Returns the character encoding of the output stream
      System.out.println("Character encoding of output1: " + output1.getEncoding());
      System.out.println("Character encoding of output2: " + output2.getEncoding());

      // Closes the reader
      output1.close();
      output2.close();
    }

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

Đầu ra

The character encoding of output1: Cp1252
The character encoding of output2: UTF8

Trong ví dụ trên, chúng tôi đã tạo 2 trình ghi luồng đầu ra có tên đầu ra1 và đầu ra2.

  • đầu ra1 không chỉ định mã hóa ký tự. Do đó, phương thức getEncoding() trả về mã hóa ký tự mặc định.
  • đầu ra2 chỉ định mã hóa ký tự, UTF8 . Do đó, phương thức getEncoding() trả về mã hóa ký tự được chỉ định.

Lưu ý : Chúng tôi đã sử dụng phương thức Charset.forName()để chỉ định loại mã hóa ký tự. Để tìm hiểu thêm, hãy truy cập Java Charset (tài liệu Java chính thức) .

4. phương thức close()

Để đóng trình ghi dòng đầu ra, chúng ta có thể sử dụng phương thức close(). 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.

5. Các phương thức khác của OutputStreamWriter

phương thứcSự miêu tả
flush()buộc ghi tất cả dữ liệu có trong trình ghi vào đích tương ứng
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 OutputStreamWriter (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!