Java:如何从 PrintStream 读取数据?

标签 java io

我正在尝试从以下代码块中的 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/

相关文章:

java - J2ME : lock the device programmatically

java - 比较转换 ISO8601 兼容日期与 Java 日期?

java - 如何从数组中随机选择一个元素

java - 文件中没有保存任何内容

java - 为什么 "fileInputStream.read()"的值会改变呢?

java - 使用 FileWriter Java 写入一个已经存在的文件

java - 查找数组中的重复值

java - 如何启用/禁用 ToggleButton 的声音?

java - Jdk 7 中的 FileChannel.open() 与 RandomAccessFile

io - 如何跟踪使用 'std::io::Write' 时写入的字节数?