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

有没有其他方法可以将 writer 转换为 string?

4

3 回答 3

63

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

Writer writer = new StringWriter();
String data = writer.toString(); // now it works fine
于 2013-10-04T12:39:02.410 回答
7

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

  • 如果您需要作家的线程安全,那么StringWriter就是要走的路。

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

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

示例用法:

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

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

于 2018-09-11T11:14:45.570 回答
4

如果您想要一个Writer导致 a 的实现String,请使用 aStringWriter

于 2013-10-04T12:38:11.633 回答