如何将编写器转换为字符串

2022-09-01 07:21:10
 Writer writer = new Writer();
 String data = writer.toString();/* the value is not casting and displaying null...*/

有没有其他方法可以将编写器转换为字符串?


答案 1

如果我想用它来制作一个字符串,我会使用专门的作家。

Writer writer = new StringWriter();
String data = writer.toString(); // now it works fine

答案 2

有几个答案建议使用 .重要的是要意识到StringWriter在内部使用StringBuffer,这意味着它是线程安全的,并且具有显着的同步开销StringWriter

  • 如果您需要编写器的线程安全,那么这就是要走的路。StringWriter

  • 如果你不需要线程安全(即编写器只在单个方法中用作局部变量),并且你关心性能 ,请考虑使用 commons-io 库中StringBuilderWriterWriter

StringBuilderWriter几乎与 相同,但使用 代替 。StringWriterStringBuilderStringBuffer

示例用法:

Writer writer = new StringBuilderWriter();
String data = writer.toString();

注意 — Log4j 有自己的 StringBuilderWriter 实现,几乎与 commons-io 版本相同。