如何将流结果转换为字符串

Posted

技术标签:

【中文标题】如何将流结果转换为字符串【英文标题】:How to convert stream results to string 【发布时间】:2012-10-24 10:27:39 【问题描述】:

我想将流结果输出转换为字符串,因为我想要 在 Junit 中使用它我认为我需要使用字符串编写器但是 我不确定如何使用它。

StreamResult result = new StreamResult(new File("C:\\file.xml"));
transformer.transform(source, result);

谢谢 费多尔

【问题讨论】:

【参考方案1】:

查看并学习使用 StreamResult 类的 javadocs (http://java.sun.com/javase/6/docs/api/)。 StreamResult 的构造函数之一将 Writer 对象作为参数。您将看到 Writer 的子类之一是 StringWriter。因此,要从写入 StreamResult 的内容中获取字符串,可以构造一个 StringWriter,将其放入 StreamResult,将 Source 转换()到 StreamResult,然后从 StringWriter 中获取字符串。

//create a StringWriter for the output
StringWriter outWriter = new StringWriter();
StreamResult result = new StreamResult( outWriter );
...
transformer.transform( source, result );  
StringBuffer sb = outWriter.getBuffer(); 
String finalstring = sb.toString();

【讨论】:

你好 Timo,谢谢,但我应该把转换器放在哪里 StreamResult result = new StreamResult(new File("C:\\file.xml")); 好吧,您可以使用 StreamResult result = new StreamResult(new File("C:\\file.xml")); 将结果放入文件中。或者您使用 StreamResult result = new StreamResult(outWriter); 将其放入 StringWriter如果你想在字符串中使用文件,为什么要使用它? “来源”代表什么? 我猜source 是正在转换的 XML。【参考方案2】:
StringWriter writer = new StringWriter();
transformer.transform(source, new StreamResult(writer));
String output = writer.toString();

【讨论】:

【参考方案3】:

您可以通过这种方式使用StringWriter:

StringWriter sw = (StringWriter) result.getWriter(); 
StringBuffer sb = sw.getBuffer(); 
String finalstring = sb.toString();

【讨论】:

这是我要找的那个 使用缓冲区和不使用缓冲区有什么区别,就像在@nosid 回答中一样?

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

如何在 Java 中将 InputStream 转换为字符串?

如何在 Java 中将 InputStream 转换为字符串?

c ++流负数转换

如何将流大小转换为其他或如何将流大小值传递给向量?

如何从单个 JSON(IOT HUB)将流分析输出转换为多行

将流转换为小批量以加载到 bigquery