Java: PrintStream to String?
2022-08-31 08:36:53
我有一个函数,它接受某种类型的对象,以及要打印到的对象,并输出该对象的表示形式。如何在字符串中捕获此函数的输出?具体来说,我想像在方法中一样使用它。PrintStream
toString
我有一个函数,它接受某种类型的对象,以及要打印到的对象,并输出该对象的表示形式。如何在字符串中捕获此函数的输出?具体来说,我想像在方法中一样使用它。PrintStream
toString
使用 ByteArrayOutputStream
作为缓冲区:
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final String utf8 = StandardCharsets.UTF_8.name();
try (PrintStream ps = new PrintStream(baos, true, utf8)) {
yourFunction(object, ps);
}
String data = baos.toString(utf8);
您可以使用传递到构造函数中的 ByteArrayOutputStream 来构造 PrintStream,稍后可以使用该构造函数来获取写入 PrintStream 的文本。
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
...
String output = os.toString("UTF8");