Writer writer = new Writer();
String data = writer.toString();/* the value is not casting and displaying null...*/
有没有其他方法将一个writer转换为字符串?
如果我想将其转换为字符串,我会使用专门的编写器。
Writer writer = new StringWriter();
String data = writer.toString(); // now it works fine
有几个答案建议使用 StringWriter
。需要注意的是,StringWriter
内部使用 StringBuffer
,这意味着它是 线程安全 的,并且具有显着的 同步开销。
如果您需要写入器的线程安全性,则应使用 StringWriter
。
如果您不需要线程安全的 Writer
(即该写入器仅作为单个方法中的局部变量使用),并且您关心性能 - 考虑使用StringBuilderWriter
来自commons-io 库。
StringBuilderWriter
几乎与 StringWriter
相同,但使用 StringBuilder
替换了 StringBuffer
。
示例用法:
Writer writer = new StringBuilderWriter();
String data = writer.toString();
注意 - Log4j有自己的StringBuilderWriter实现,几乎与commons-io版本相同。