首页 > 编程知识 正文

java stream使用,java 字符串转义

时间:2023-05-06 08:04:22 阅读:110066 作者:2412

将输出从java.io.OutputStream传递到Java字符串的最佳方法是什么?

我说我有办法:

写入到流(objecto,OutputStream out ) )。

将数据从对象写入特定流。 但是,我想尽可能容易地将该输出转换为String。

我正在考虑编写这样的类(没有经过测试)。

classstringoutputstreamextendsoutputstream {

字符串构建器mbuf;

公共void write (intbyte ) throws IOException {

mbuf.append () char ) byte;

}

公共字符串获取

return mBuf.toString (;

}

}

但是有更好的方法吗? 我想做个测试!

#1楼

这很好

output stream output=new output stream (

{

privatestringbuilderstring=new stringbuilder (;

@Override

公共void write (intb ) throws IOException {

this.string.append((char ) b;

}

//netbeansideautomaticallyoverridesthistostring ()

公共字符串

return this.string.toString (;

}

(;

方法调用=marshaller.marshal((object ) toWrite,) ) OutputStream ) output;

然后,为了打印字符串并获取字符串,参考“输出”流本身即可。 例如,在console=system.out.println (output )中打印字符串。

作为参考:我的方法是调用Marshaller.Marshal(object,Outputstream )来处理XML。 与这个主题无关。

这在生产用途上非常浪费,转换方式太多,有点松。 为了证明有可能创建自定义输出流并输出字符串,进行了编码。 但是,如果像Horcrux7那样,用两种方法调用即可。

世界生活在另一天。

#2楼

我用ByteArrayOutputStream。 完成后,请打电话。

newstring(Baos.tobytearray ),代码页);

或更好:

baos.tostring (代码页);

方法toString () )只接受String作为代码页参数(Java 8)。

#3楼

我喜欢Apache Commons IO库。 让我们看一下bytearray输出流的版本。 包括tostring(stringenc )方法和toByteArray )。 使用现有的受信任组件(如Commons项目)会使代码变得更小,更容易扩展和重用。

#4楼

我最终要做的是:

obj.writetostream(towrite,os );

try {

stringout=new string (OS.to bytearray ),' UTF-8 ';

assert true (out.contains (' test string ' ) );

} catch (unsupportedencondingexceptione ) (

故障(caught exception : ) e.getmessage ) );

}

其中操作系统是字节输出流。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。