首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PrintStream中读取?

如何从PrintStream中读取?
EN

Stack Overflow用户
提问于 2009-07-30 15:14:24
回答 3查看 11.9K关注 0票数 1

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

代码语言:javascript
复制
    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呢?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-30 15:21:09

简单地说:你不能。PrintStream是用来输出的,要读取数据,你需要一个InputStream (或任何子类)。

您已经有了一个ByteArrayOutputStream。最简单的方法是:

代码语言:javascript
复制
// ...

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

// ...

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

// use in to read the data
票数 9
EN

Stack Overflow用户

发布于 2009-07-30 15:20:29

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

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

票数 0
EN

Stack Overflow用户

发布于 2009-07-30 15:25:12

由于您不能更改控制器,因此为控制器启动一个进程并从该进程的输出中读取。

Example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1207281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档