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 Reader là BufferedReader, InputStreamReader, FileReader, StringReader.
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ôngread(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ảngskip()
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 Writer là BufferedWriter, OutputStreamWriter, FileWriter, StringWriter.
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 streamwrite(String data)
ghi chuỗi string vào writerappend(char c)
chèn thêm ký tự c vào writer hiện tạiflush()
bắt buộc ghi tất cả dữ liệu trong writer vào output streamclose()
đó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.