Lớp PushbackReader
(Class PushbackReader)
Lớp PushbackReader là một lớp đặc biệt kế thừa từ FilterReader, cho phép bạn "đẩy ngược" (push back) một hoặc nhiều ký tự vừa đọc vào luồng để đọc lại sau này. Điều này rất hữu ích trong các trường hợp cần kiểm tra trước một vài ký tự để quyết định cách xử lý chúng.
Khai báo lớp PushbackReader trong Java
Để sử dụng lớp PushbackReader, bạn cần import gói java.io bạn cần thêm câu lệnh import vào đầu file Java của mình. Gói này cung cấp các lớp và giao diện để thực hiện các hoạt động nhập xuất (I/O) trong Java.
Cú pháp câu lệnh import:
Cú pháp
import java.io.PushbackReader;
Cú pháp khai báo lớp PushbackReader:
Cú pháp
public class PushbackReader
extends FilterReader
Dưới đây là giải thích chi tiết về cú pháp khai báo này:
↳ public class PushbackReader: Đây là khai báo một lớp công khai (public) tên là PushbackReader. Lớp này có thể được truy cập từ bất kỳ đâu trong dự án Java, miễn là nó được import hoặc ở cùng gói.
↳ extends FilterReader: Từ khóa extends có nghĩa là lớp PushbackReader kế thừa từ lớp FilterReader. Điều này có nghĩa là PushbackReader là một loại FilterReader và có thể sử dụng tất cả các phương thức và thuộc tính của FilterReader.
Các Constructor của lớp PushbackReader
Lớp PushbackReader cung cấp hai constructor để tạo đối tượng và thiết lập kích thước bộ đệm:
↳ PushbackReader(Reader in): Tạo một PushbackReader với bộ đệm có kích thước mặc định (thường là 1 ký tự) để đọc từ luồng ký tự in.
↳ PushbackReader(Reader in, int size): Tạo một PushbackReader với bộ đệm có kích thước size để đọc từ luồng ký tự in.
Các phương thức của lớp PushbackReader
Lớp PushbackReader cung cấp các phương thức để đọc và đẩy ngược ký tự vào luồng. Dưới đây là danh sách tất cả các phương thức của lớp PushbackReader trong Java:
↳ void close(): Đóng luồng và giải phóng tài nguyên hệ thống liên quan.
↳ void mark(int readAheadLimit): Đánh dấu vị trí hiện tại trong luồng để có thể quay lại sau này bằng phương thức reset().
↳ boolean markSupported(): Luôn trả về false vì PushbackReader không hỗ trợ đánh dấu.
↳ int read(): Đọc một ký tự từ luồng. Trả về giá trị của ký tự hoặc -1 nếu đã đến cuối luồng.
↳ int read(char[] cbuf, int off, int len): Đọc tối đa len ký tự vào mảng cbuf bắt đầu từ vị trí off. Trả về số lượng ký tự đã đọc hoặc -1 nếu đã đến cuối luồng.
↳ boolean ready(): Kiểm tra xem luồng có sẵn dữ liệu để đọc ngay lập tức hay không.
↳ void reset(): Đặt lại vị trí của luồng về vị trí đã được đánh dấu bằng phương thức mark().
↳ long skip(long n): Bỏ qua n ký tự trong luồng. Trả về số lượng ký tự thực sự đã bỏ qua.
↳ void unread(char[] cbuf): Đẩy ngược toàn bộ mảng ký tự cbuf vào đầu bộ đệm.
↳ void unread(char[] cbuf, int off, int len): Đẩy ngược một phần của mảng ký tự cbuf vào đầu bộ đệm.
↳ void unread(int c): Đẩy ngược một ký tự vào đầu bộ đệm.
Ví dụ
Dưới đây là một ví dụ chi tiết về cách sử dụng lớp PushbackReader trong Java. Ví dụ này sẽ minh họa cách đọc ký tự từ một chuỗi văn bản, đẩy lùi ký tự trở lại luồng và đọc lại ký tự đó.
Ví dụ: Example.java
import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;
public class Example {
public static void main(String[] args) {
// Chuỗi văn bản để đọc
String text = "Hello, World!";
// Tạo đối tượng PushbackReader từ một StringReader
try (PushbackReader pushbackReader = new PushbackReader(new StringReader(text))) {
int character;
// Đọc ký tự đầu tiên
character = pushbackReader.read();
System.out.println("Ký tự đầu tiên đọc được: " + (char) character);
// Đẩy lùi ký tự vừa đọc
pushbackReader.unread(character);
// Đọc lại ký tự đã đẩy lùi
character = pushbackReader.read();
System.out.println("Ký tự đọc lại sau khi đẩy lùi: " + (char) character);
// Đọc ký tự tiếp theo để minh họa việc đọc thêm
character = pushbackReader.read();
System.out.println("Ký tự tiếp theo đọc được: " + (char) character);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Kết quả của chương trình là:
Ký tự đọc lại sau khi đẩy lùi: e
Ký tự tiếp theo đọc được: e
PushbackReader cho phép bạn đẩy lùi các ký tự đã đọc trở lại luồng đầu vào.
Ví dụ này minh họa cách sử dụng PushbackReader để đọc ký tự, đẩy lùi ký tự để đọc lại, và sau đó tiếp tục đọc các ký tự tiếp theo.