1. Lớp StringReader trong Java
Lớp StringReader nằm trong package java.io
package có thể được sử dụng để đọc dữ liệu ký tự từ string. Lớp StringReader kế thừa từ lớp abstract Reader.
Tạo ra một StringReader
Để sử dụng StringReader, chúng ta import java.io.StringReader
.
//Tạo một StringReader
StringReader input = new StringReader(String data);
Trong ví dụ trên, chúng ta đã tạo ra một StringReader để đọc các ký tự từ một chuỗi String data.
Các phương thức của StringReader
Phương thức read()
read()
đọc một ký tự từ string readerread(char[] array)
đọc các ký tự từ reader và lưu các ký tự này vào mảng arrayread(char[] array, int start, int length)
đọc length ký tự từ reader và lưu trữ các ký tự này bắt đầu từ vị trí start của mảng
import java.io.StringReader;
public class Main {
public static void main(String[] args) {
String data = "This is the text read from StringReader.";
//Tạo một mảng lưu trữ các ký tự
char[] array = new char[100];
try {
//Tạo một StringReader
StringReader input = new StringReader(data);
//Đọc các ký tự và lưu vào array
input.read(array);
System.out.println("Data read from the string:");
System.out.println(array);
input.close();
}
catch(Exception e) {
System.err.println(e.getStackTrace());
}
}
}
Kết quả
Data read from the string:
This is the text read from StringReader.
Phương thức skip()
Để bỏ qua một số ký tự không cần đọc, chúng ta có thể sử dụng hàm skip()
.
import java.io.StringReader;
public class Main {
public static void main(String[] args) {
String data = "This is the text read from StringReader";
System.out.println("Original data: " + data);
//Tạo một mảng ký tự
char[] array = new char[100];
try {
//Tạo một StringReader
StringReader input = new StringReader(data);
//Bỏ qua 5 ký tự
input.skip(5);
input.read(array);
System.out.println("Data after skipping 5 characters:");
System.out.println(array);
input.close();
}
catch(Exception e) {
System.err.println(e.getStackTrace());
}
}
}
Kết quả
Original data: This is the text read from StringReader
Data after skipping 5 characters:
is the text read from StringReader
Trong chương trình trên, 5 ký tự ‘T’, ‘h’, ‘i’, ‘s’ và ‘ ‘ được bỏ qua, không được đọc.
2. Lớp StringWriter trong Java
Lớp StringWriter nằm trong package java.io có thể được sử dụng để ghi dữ liệu các ký tự vào string buffer. Lớp StringWriter kế thừa từ lớp abstract Writer.
Lưu ý: Trong Java, string buffer được coi như là một chuỗi có thể thay đổi, tức là chúng ta có thể sửa đổi string buffer. Để chuyển đổi string buffer thành string, chúng ta có thể sử dụng phương thức toString()
.
Tạo ra một StringWriter
Để sử dụng StringWriter, chúng ta phải import java.io.StringWriter
.
//Tạo một StringWriter
StringWriter output = new StringWriter();
Trong ví dụ trên, chúng đã tạo ra một StringWriter với dung lượng bộ nhớ đệm mặc định của StringBuffer có thể lưu trữ 16 ký tự. Chúng ta có thể thay đổi dung lượng bộ nhớ đệm mặc định này với tham số int size.
//Tạo StringWriter với tham số int size
StringWriter output = new StringWriter(int size);
Các phương thức của StringWriter
Phương thức write()
write()
ghi một ký tự vào string writerwrite(char[] array)
ghi các ký tự từ mảng array vào writerwrite(String data)
ghi chuỗi String data vào writer
import java.io.StringWriter;
public class Main {
public static void main(String[] args) {
String data = "This is the text in the string.";
try {
//Tạo StringWriter với dung lượng bộ nhớ đệm mặc định
StringWriter output = new StringWriter();
//Ghi data vào string buffer
output.write(data);
//In ra string writer
System.out.println("Data in the StringWriter: " + output);
output.close();
}
catch(Exception e) {
System.err.println(e.getStackTrace());
}
}
}
Kết quả
Data in the StringWriter: This is the text in the string.
Truy cập dữ liệu từ StringBuffer
getBuffer()
trả về dữ liệu trong string buffertoString()
trả về dữ liệu trong string buffer dưới dạng một string
import java.io.StringWriter;
public class Main {
public static void main(String[] args) {
String data = "This is the original data";
try {
//Tạo StringWriter với dung lượng bộ nhớ đệm mặc định
StringWriter output = new StringWriter();
//Ghi dữ liệu vào string buffer
output.write(data);
//Trả về string buffer
StringBuffer stringBuffer = output.getBuffer();
System.out.println("StringBuffer: " + stringBuffer);
//Trả về string buffer như là một string
String string = output.toString();
System.out.println("String: " + string);
output.close();
}
catch(Exception e) {
System.err.println(e.getStackTrace());
}
}
}
Kết quả
StringBuffer: This is the original data
String: This is the original data
Khi không sử dụng StringReader hoặc StringWriter nữa thì các bạn nhớ sử dụng hàm close()
để đóng kết nối với input stream và output stream.