将一个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

上一篇: Get an OutputStream into a String

下一篇: How do I use a delimiter in Java Scanner?