将输出从java.io.OutputStream传递到Java中的String的最佳方法是什么?
说我有方法:
writeToStream(Object o, OutputStream out)
将某些数据从对象写入给定流 . 但是,我希望尽可能轻松地将此输出转换为String .
我正在考虑写一个这样的课程(未经测试):
class StringOutputStream extends OutputStream {
StringBuilder mBuf;
public void write(int byte) throws IOException {
mBuf.append((char) byte);
}
public String getString() {
return mBuf.toString();
}
}
但有更好的方法吗?我只想进行测试!
4 回答
我喜欢Apache Commons IO库 . 看看它的ByteArrayOutputStream版本,它有
toString(String enc)
方法和toByteArray()
. 使用像Commons项目这样的现有和可信组件可以让您的代码更小,更容易扩展和重用 . 祝好运 .这是我最终做的事情:
os是
ByteArrayOutputStream
.这很好用
方法调用= >>
marshaller.marshal( (Object) toWrite , (OutputStream) output);
然后打印字符串或获取它只是引用"output"流本身作为示例,将字符串打印到console = >>
System.out.println(output);
仅供参考:我的方法调用
marshaller.marshal(Object,Outputstream)
用于处理XML . 这与这个话题无关 .这对于 生产环境 使用来说是非常浪费的,转换的方式太多而且有点松散 . 这只是为了证明你完全有可能创建一个自定义的OuputStream并输出一个字符串 . 但是只需要使用Horcrux7方式,只需两次方法调用即可 .
世界生活在另一天......
我会用
ByteArrayOutputStream
. 完成后你可以打电话:或更好
对于String构造函数,
codepage
可以是String或java.nio.charset.Charset的实例 . 可能的值是java.nio.charset.StandardCharsets.UTF_8 .方法toString只接受一个String作为
codepage
参数(stand Java 8) .