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);