我正在尝试从以下代码块中的 PrintStram 读取(将传入数据附加到本地字符串中):
System.out.println("Starting Login Test Cases...");
out = new PrintStream(new ByteArrayOutputStream());
command_feeder = new PipedWriter();
PipedReader in = new PipedReader(command_feeder);
main_controller = new Controller(in, out);
for(int i = 0; i < cases.length; i++)
{
command_feeder.write(cases[i]);
}
main_controller 将向其输出(PrintStream)写入一些字符串,那么假设我不能更改 Controller 类中的任何代码,我如何从这个 PrintStream 中读取?提前致谢。
最佳答案
简单地说:你不能。 PrintStream 用于输出,要读取数据,您需要一个 InputStream(或任何子类)。
您已经有一个 ByteArrayOutputStream。最简单的做法是:
// ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);
// ...
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
// use in to read the data
关于Java:如何从 PrintStream 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1207281/