如何将Writer转换为String

37
 Writer writer = new Writer();
 String data = writer.toString();/* the value is not casting and displaying null...*/

有没有其他方法将一个writer转换为字符串?


1
你或许应该阅读一下如何使用Writer的文档,因为你不能像那样初始化它,因为它是抽象的。 - CodingIntrigue
你能展示一下你是如何向写入器中添加项目的吗? - Scott Helme
3个回答

65

如果我想将其转换为字符串,我会使用专门的编写器。

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

11

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

  • 如果您需要写入器的线程安全性,则应使用 StringWriter

  • 如果您不需要线程安全的 Writer(即该写入器仅作为单个方法中的局部变量使用),并且您关心性能 - 考虑使用StringBuilderWriter来自commons-io 库

StringBuilderWriter 几乎与 StringWriter 相同,但使用 StringBuilder 替换了 StringBuffer

示例用法:

Writer writer = new StringBuilderWriter();
String data = writer.toString();
注意 - Log4j有自己的StringBuilderWriter实现,几乎与commons-io版本相同。

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接