Cодержание
Руководство Java StringWriter
View more Tutorials:


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. |
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)