Lớp StringReader và StringWriter trong Java

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

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 reader
  • read(char[] array) đọc các ký tự từ reader và lưu các ký tự này vào mảng array
  • read(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 writer
  • write(char[] array) ghi các ký tự từ mảng array vào writer
  • write(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 buffer
  • toString() 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.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Lớp BufferedReader và BufferedWriter trong JavaQuản lý bộ nhớ trong Java: bộ nhớ stack và bộ nhớ heap >>
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ỏ.