为了账号安全,请及时绑定邮箱和手机立即绑定

将OutputStream转换为字符串

将OutputStream转换为字符串

jeck猫 2019-12-09 09:35:52
将输出从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();  }}但是有更好的方法吗?我只想进行测试!
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

我会用一个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)。


查看完整回答
反对 回复 2019-12-09
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

这很好


    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的方式进行,那么只需两个方法调用就可以了。


世界生活在另一天。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 4416 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信