如何将 Writer 转换为字符串

Posted

技术标签:

【中文标题】如何将 Writer 转换为字符串【英文标题】:How to convert Writer to String 【发布时间】:2013-10-11 10:49:18 【问题描述】:
 Writer writer = new Writer();
 String data = writer.toString();/* the value is not casting and displaying null...*/

还有其他方法可以将写入器转换为字符串吗?

【问题讨论】:

您或许应该阅读有关如何使用Writer 的文档,因为它是抽象的,您甚至无法像那样初始化它 你能说明你是如何向作者添加项目的吗? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

如果您需要编写器的线程安全,那么StringWriter 是您的最佳选择。

如果您不需要线程安全的Writer(即编写器仅在单个方法中用作局部变量)并且您关心性能 - 考虑使用StringBuilderWriter强>来自commons-io library。

StringBuilderWriterStringWriter 几乎相同,但使用StringBuilder 而不是StringBuffer

示例用法:

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

注意——Log4j has its own StringBuilderWriter implementation 几乎与 commons-io 版本相同。

【讨论】:

【参考方案3】:

如果您想要一个导致String、use a StringWriterWriter 实现。

【讨论】:

以上是关于如何将 Writer 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据作为字符串(不是文件)写入 CSV 格式?

字符流ReaderWriter,字符转换流 OutputStreamWriterInputStreamReader

将mysql数据导出到csv时不要将NULL值转换为空字符串

(转)out.writer和out.print

23.其他操作流

java的io问题:为什么要用OutputStreamWriter呢,字节流不好用,直接用字符流writer不就行了吗