Java:PrintStream到string?

我有一个函数,它需要一个特定types的对象,以及要打印的PrintStream ,并输出该对象的表示。 我怎样才能捕捉到这个函数的输出在一个string? 具体来说,我想在toString方法中使用它。

使用ByteArrayOutputStream作为缓冲区:

 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos, true, "utf-8"); yourFunction(object, ps); String content = new String(baos.toByteArray(), StandardCharsets.UTF_8); ps.close(); 

您可以构造一个带有ByteArrayOutputStream的PrintStream,传递给构造函数,稍后您可以使用该构造函数来抓取写入PrintStream的文本。

 ByteArrayOutputStream os = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(os); ... String output = os.toString("UTF8"); 

也许这个问题可能会帮助你: 获取OutputStream到一个string

子类OutputStream并将其包装在PrintStream中

以前的答案是统一的,这个答案适用于Java 1.7以及之后的版本。 另外,我添加了代码来closuresStreams。

 final Charset charset = StandardCharsets.UTF_8; ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos, true, charset.name()); yourFunction(object, ps); String content = new String(baos.toByteArray(), charset); ps.close(); baos.close(); 

定义并初始化一个名为inSS的Scannervariables,该variables使用StringvariablesmyStrLine创build一个inputstringstream。

Ans:Scanner inSS = new Scanner(myStrLine);