"Xin chào, Amigo! Bạn đã sử dụng các lớp BufferedReaderInputStreamReader trong một thời gian dài. Bây giờ hãy khám phá xem chúng thực sự làm gì."

Lớp InputStreamReader là một bộ điều hợp cổ điển từ giao diện InputStream sang giao diện Reader . Không có gì để thêm ở đây cả.

Nhưng tóm lại, đây là những gì xảy ra. Khi bạn yêu cầu (đọc) ký tự tiếp theo từ một đối tượng InputStreamReader , nó sẽ đọc một vài byte từ InputStream được chuyển đến hàm tạo và trả về chúng dưới dạng một ký tự.

Nhưng Reader không phải là đối tượng thuận tiện nhất để làm việc. Thông thường, những gì chúng ta cần không phải là đọc tất cả các ký tự do người dùng nhập cùng một lúc mà là chia các ký tự này thành các dòng.

"Nhưng lớp Reader có phương thức đọc (CharBuffer s). Chúng ta không thể sử dụng nó sao?"

"Phương pháp này đọc dữ liệu theo khối kích thước của bộ đệm và đặt chúng vào đối tượng CharBuffer."

Văn bản thường được chia thành các dòng. Vì vậy, phương thức read(CharBuffer s) có thể đọc nhiều dòng cùng một lúc. Nếu chúng ta cần đọc văn bản chính xác đến cuối dòng (tức là tất cả các ký tự trong một dòng cho đến ký tự xuống dòng), tốt hơn là nên tìm thứ khác. Và một phương pháp thay thế tồn tại. Trong lớp BufferedReader .

Lớp BufferedReader , một cấu trúc thuận tiện trên đầu Reader, có một phương thức rất tiện lợi: readLine () . Phương pháp này cho phép chúng tôi đọc toàn bộ dòng văn bản từ Trình đọc cùng một lúc. Khi bạn gọi readLine trong mã của mình, nó sẽ đọc các ký tự từ đối tượng Reader cho đến khi gặp một ký tự xuống dòng. Khi bắt gặp ký tự xuống dòng, phương thức sẽ dán các ký tự này lại với nhau thành một chuỗi và trả về nó.

"Tôi đã sử dụng nó thường xuyên, nhưng tôi không biết nó hoạt động như thế nào. Giờ tôi đã biết. Cảm ơn, Kim."