Lớp Reader và Writer trong Java

Đây là bài 52/62 bài của series môn học Ngôn ngữ lập trình Java

1. Lớp Reader trong Java

Lớp abstract Reader nằm trong package java.io là lớp cha của những lớp giúp đọc các dòng dữ liệu ký tự (character stream).

Các lớp con của lớp abstract ReaderBufferedReader, InputStreamReader, FileReader, StringReader.

Các subclass của Reader trong Java

Tạo ra một Reader

Để sử dụng lớp Reader, chúng ta cần import java.io.Reader. Bản thân lớp Reader là lớp abstract nên không thể tạo ra các đối tượng. Nhưng chúng ta có thể sử dụng các lớp con của lớp Reader để tạo ra các đối tượng Reader.

//Tạo một đối tượng kiểu Reader
Reader input = new FileReader();

Các phương thức của lớp abstract Reader

  • ready() kiểm tra xem Reader có sẵn sàng để đọc hay không
  • read(char[] array) đọc các ký tự từ input stream và lưu trữ vào mảng (array)
  • read(char[] array, int start, int length) đọc length ký tự từ array và lưu trữ vào array ở vị trí start trong mảng
  • skip() bỏ qua một số ký tự không cần đọc trong input stream

Ví dụ sử dụng lớp Reader với lớp con FileReader

Giả sử, chúng ta có 1 file input.txt nằm trong phân vùng D có nội dung như bên dưới.

This is a line of text inside the file.

Chúng ta có thể sử dụng lớp Reader để đọc file này.

import java.io.Reader;
import java.io.FileReader;
class Main {
    public static void main(String[] args) {
        //Tạo một mảng các ký tự
        char[] array = new char[100];
        try {
            //Tạo ra một Reader sử dụng FileReader
            Reader input = new FileReader("D:\\input.txt");
            //Kiểm tra Reader có sẵn sàng để đọc không 
            System.out.println("Is there data in the stream?  " + input.ready());
            //Đọc các ký tự và lưu vào array
            input.read(array);
            System.out.println("Data in the stream:");
            System.out.println(array);
            //Đóng reader
            input.close();
        }
        catch(Exception e) {
            System.err.println(e.getStackTrace());
        }
    }
}
Kết quả
Is there data in the stream?  true
Data in the stream:
This is a line of text inside the file.

2. Lớp Writer trong Java

Lớp abstract Writer nằm trong package java.io là lớp cha của những lớp giúp ghi các dòng dữ liệu ký tự (character stream).

Các lớp con của lớp abstract WriterBufferedWriter, OutputStreamWriter, FileWriter, StringWriter.

Các subclass của Writer trong Java

Tạo ra một Writer

Để sử dụng lớp Writer, chúng ta cần import java.io.Writer. Bản thân lớp Writer là lớp abstract nên không thể tạo ra các đối tượng. Nhưng chúng ta có thể sử dụng các lớp con của lớp Writer để tạo ra các đối tượng Writer.

//Tạo một Writer
Writer output = new FileWriter();

Các phương thức của lớp abstract Writer

  • write(char[] array) ghi các ký tự từ mảng array vào output stream
  • write(String data) ghi chuỗi string vào writer
  • append(char c) chèn thêm ký tự c vào writer hiện tại
  • flush() bắt buộc ghi tất cả dữ liệu trong writer vào output stream
  • close() đóng kết nối writer

Ví dụ ghi dữ liệu sử dụng Writer với lớp con FileWriter

import java.io.FileWriter;
import java.io.Writer;
public class Main {
    public static void main(String args[]) {
        String data = "This is the data in the output file";
        try {
            //Tạo ra một Writer sử dụng FileWriter
            Writer output = new FileWriter("D:\\output.txt");
            //Ghi dữ liệu string vào file
            output.write(data);
            //Đóng Writer
            output.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Chương trình trên giúp ghi chuỗi ký tự String data = "This is the data in the output file"; vào file D:\\output.txt sử dụng Writer.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Lớp BufferedInputStream và BufferedOutputStream trong JavaLớp InputStreamReader và OutputStreamWriter trong Java >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.