betacode

Руководство Java StringWriter

  1. StringWriter
  2. Examples

1. StringWriter

StringWriter - это подкласс Writer, который управляет объектом StringBuffer. Символы, записанные в StringWriter, будут добавлены (append) к объекту StringBuffer, которым он управляет.
Класс StringWriter не использует операции I/O или Network (сетевые), поэтому вы можете использовать его, не закрывая.
StringWriter constructor
StringWriter()    

StringWriter​(int initialSize)
Помимо методов, унаследованных от своего родительского класса, StringWriter также имеет несколько более заметных собственных методов, в том числе:
String toString()
Возвращает String из buffer.
StringBuffer getBuffer()
Возвращает объект StringBuffer, которым в данный момент управляет StringWriter.
StringWriter append(
char c)
Добавляет символ в buffer - то же самое, что вызывает метод StringWriter.write(char), но этот метод возвращает текущий объект StringWriter. Это позволяет вызвать другой метод StringWriter вместо того, чтобы заканчиваться точкой с запятой ( ; )
StringWriter append(
CharSequence csq)
Аналогично методу StringWriter.write(CharSequence), но возвращает текущий объект StringWriter.
StringWriter append(
CharSequence csq,
int start, int end)
Аналогично методу StringWriter.write(CharSequence,int,int), но возвращает текущий объект StringWriter.

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
Обычно, когда возникает исключение (Exception), вы часто видите информацию "Stack Trace", напечатанную на экране Console, как получить это содержимое в виде 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)

Руководства Java IO

Show More