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