Java:我如何从PrintStream中读取?

时间:2009-07-30 15:14:24

标签: java io

我正在尝试从以下代码块中的PrintStram读取(将传入数据附加到本地String中):

    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将为其out(PrintStream)写一些字符串,那么我怎么能从这个PrintStream中读取,假设我无法更改Controller类中的任何代码?提前谢谢。

3 个答案:

答案 0 :(得分:8)

简单地说:你做不到。 PrintStream用于输出,要读取数据,您需要一个InputStream(或任何子类)。

您已拥有ByteArrayOutputStream。最容易做的是:

// ...

ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);

// ...

ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());

// use in to read the data

答案 1 :(得分:0)

如果保留对基础字节数组输出流的引用,则可以在其上调用toString(String encoding)toByteArray()

我怀疑你想要前者,你需要指定编码以匹配字符串的写入方式(你可以使用默认的编码变体)

答案 2 :(得分:0)

由于您无法更改控制器,请启动控制器的过程并从过程的输出中读取。

Example