如何将 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。
StringBuilderWriter
与StringWriter
几乎相同,但使用StringBuilder
而不是StringBuffer
。
示例用法:
Writer writer = new StringBuilderWriter();
String data = writer.toString();
注意——Log4j has its own StringBuilderWriter implementation 几乎与 commons-io 版本相同。
【讨论】:
【参考方案3】:如果您想要一个导致String
、use a StringWriter
的Writer
实现。
【讨论】:
以上是关于如何将 Writer 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
字符流ReaderWriter,字符转换流 OutputStreamWriterInputStreamReader