openplanning

Hướng dẫn và ví dụ Java StringWriter

Xem thêm các chuyên mục:

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- StringWriter

StringWriter là một lớp con của Writer, nó quản lý một đối tượng StringBuffer. Các ký tự được ghi vào StringWriter sẽ được nối (append) vào đối tượng StringBuffer mà nó đang quản lý.
Lớp StringWriter không sử dụng các hoạt động I/O hoặc Network (mạng) vì vậy bạn có thể sử dụng nó mà không cần đóng nó lại.
StringWriter constructor

StringWriter()    

StringWriter​(int initialSize)
Ngoài các phương thức được thừa kế từ lớp cha của nó, StringWriter cũng có thêm một vài phương thức đáng chú ý của riêng nó, bao gồm:
String toString() Trả về String của buffer.
StringBuffer getBuffer() Trả về đối tượng StringBufferStringWriter hiện tại đang quản lý.
StringWriter append(
char c)
Nối một ký tự vào buffer, giống như gọi phương thức StringWriter.write(char), nhưng phương thức này trả về đối tượng StringWriter hiện tại, điều này cho phép gọi tiếp một phương thức khác của StringWriter thay vì kết thúc bởi dấu chấm phẩy ( ; )
StringWriter append(
CharSequence csq)
Giống với phương thức StringWriter.write(CharSequence), nhưng trả về đối tượng StringWriter hiện tại.
StringWriter append(
CharSequence csq,
int start, int end)
Giống với phương thức StringWriter.write(CharSequence,int,int), nhưng trả về đối tượng StringWriter hiện tại.

2- Examples

StringWriterEx1.java

package org.o7planning.stringwriter.ex;

import java.io.StringWriter;

public class StringWriterEx1 {

    public static void main(String[] args) {
        StringWriter sw = new StringWriter();
        
        sw.write("Java Tutorial");
        sw.append("\n").append("C# Tutorial").append("\n").append("Python Tutorial");
        
        String s = sw.toString();
        
        System.out.println(s);
    }
}
Output:

Java Tutorial
C# Tutorial
Python Tutorial
Thông thường khi một ngoại lệ (Exception) xẩy ra, bạn thường nhìn thấy thông tin "Stack Trace" được in ra màn hình Console, làm sao có được nội dung này như một String?
StringWriterEx3.java

package org.o7planning.stringwriter.ex;

import java.io.PrintWriter;
import java.io.StringWriter;

public class StringWriterEx3 {

    public static void main(String[] args) {
        try {
            int a = 100/0; // Exception occur here
        } catch(Exception e)  {
            String s = getStackTrace(e);
            System.err.println(s);
        }
    }
    
    public static String getStackTrace(Throwable t)  {
        StringWriter writer = new StringWriter();
        
        // Create PrintWriter via PrintWriter(Writer) constructor.
        PrintWriter pw = new PrintWriter(writer);
        
        // Call method: Throwable.printStackTrace(PrintWriter)
        t.printStackTrace(pw);
        pw.close();
        
        String s = writer.getBuffer().toString();
        return s;
    }
}
Output:

java.lang.ArithmeticException: / by zero
    at org.o7planning.stringwriter.ex.StringWriterEx5.main(StringWriterEx5.java:10)
GetStackTraceEx.java

package org.o7planning.printwriter.ex;

import java.io.PrintWriter;
import java.io.StringWriter;

public class GetStackTraceEx {

    public static void main(String[] args) {
        try {
            int a = 100/0; // Exception occur here
        } catch(Exception e)  {
            String s = getStackTrace(e);
            System.err.println(s);
        }
    }
     
    public static String getStackTrace(Throwable t)  {
        StringWriter stringWriter = new StringWriter();
         
        // Create PrintWriter via PrintWriter(Writer) constructor.
        PrintWriter pw = new PrintWriter(stringWriter);
         
        // Call method: Throwable.printStackTrace(PrintWriter)
        t.printStackTrace(pw);
        pw.close();
         
        String s = stringWriter.getBuffer().toString();
        return s;
    }
}
Output:

java.lang.ArithmeticException: / by zero
    at org.o7planning.printwriter.ex.GetStackTraceEx.main(GetStackTraceEx.java:10)

Xem thêm các chuyên mục: