猿问

将OutputStream转换为字符串

将输出从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();

  }

}

但是有更好的方法吗?我只想进行测试!


jeck猫
浏览 4417回答 3
3回答

30秒到达战场

我会用一个ByteArrayOutputStream。完成后,您可以致电:new String( baos.toByteArray(), codepage );或更好:baos.toString( codepage );对于String构造函数,codepage可以是java.nio.charset.CharsetString的实例或实例。可能的值是java.nio.charset.StandardCharsets.UTF_8。该方法toString()仅接受a String作为codepage参数(标准Java 8)。

慕姐4208626

这很好    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);然后打印字符串或获取字符串,只需引用“输出”流本身即可例如,将字符串打印到控制台= >> System.out.println(output);仅供参考:我的方法调用marshaller.marshal(Object,Outputstream)用于处理XML。它与本主题无关。这对于生产用途是非常浪费的,存在太多的转换方式,并且有点松散。刚刚进行了编码,以向您证明完全有可能创建自定义OuputStream并输出字符串。但是,只要按照Horcrux7的方式进行,那么只需两个方法调用就可以了。世界生活在另一天。
随时随地看视频慕课网APP

相关分类

Java
我要回答