StringWriter和PrintWriter都是Java中用于输出文本的类,它们的主要区别在于输出的目标不同。
StringWriter是一个字符流,它将输出的内容保存在一个字符串缓冲区中,可以通过toString()方法获取缓冲区中的字符串。因此,StringWriter通常用于将输出内容保存到字符串中,而不是直接输出到控制台或其他设备上。
PrintWriter则是一个打印流,它可以将输出的内容直接发送到指定的目标(如控制台、文件等)。PrintWriter提供了一些方便的方法来格式化输出内容,例如println()、printf()等。
import java.io.*;
public class PrintWhyUtils {
// 创建一个StringWriter对象
private static StringWriter stringWriter = new StringWriter();
// 创建一个PrintWriter对象,并将输出目标设置为StringWriter
private static PrintWriter printWriter = new PrintWriter(stringWriter);
public static String weiterException(Exception e){
String retStr="";
try{
e.printStackTrace(printWriter);
printWriter.flush();
stringWriter.flush();
retStr=stringWriter.getBuffer().toString();
if(stringWriter!=null){
stringWriter.close();
}
if(printWriter!=null){
printWriter.close();
}
}catch(IOException ex){
ex.printStackTrace();
}finally {
try{
// 关闭PrintWriter和StringWriter
printWriter.close();
stringWriter.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
return retStr;
}
}