我正在尝试从以下代码块中的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 )中,那么假设我不能更改控制器类中的任何代码,那么我如何读取这个PrintStream呢?提前谢谢。
发布于 2009-07-30 15:21:09
简单地说:你不能。PrintStream是用来输出的,要读取数据,你需要一个InputStream (或任何子类)。
您已经有了一个ByteArrayOutputStream。最简单的方法是:
// ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);
// ...
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
// use in to read the data发布于 2009-07-30 15:20:29
如果您保留对基础字节数组输出流的引用,则可以对其调用toString(String encoding)或toByteArray()。
我怀疑您需要前者,并且您需要指定与字符串写入方式相匹配的编码(您可以使用默认编码变体)。
发布于 2009-07-30 15:25:12
由于您不能更改控制器,因此为控制器启动一个进程并从该进程的输出中读取。
Example。
https://stackoverflow.com/questions/1207281
复制相似问题