繁体   English   中英

将字节添加到InputStream

[英]Add bytes to InputStream

我想在InputStream的单元测试中模拟一个行为(就像InputStreams一样),直到有更多数据可用为止。 这就要求我将字节以块的形式附加到InputStream上,以便使用者也以块的形式读取它们。 像这样:

@Test
public void readAllInput() throws Exception {
    ???InputStream in = ...; // ???
    Consumer consumer = new Consumer(in);
    Thread consumingThread = new Thread(consumer).start();

    in.add("one".getBytes("UTF-8")); // ???
    in.add("two".getBytes("UTF-8")); // ???
    in.close();
    consumingThread.join();

    assertThat(consumer.getDataAsString()).isEqualTo("onetwo");
}

class Consumer implements Runnable {
    private InputStream in;
    private ByteArrayOutputStream out = new ByteArrayOutputStream();

    public Consumer(InputStream in) {
        this.in = in;
    }

    public void run() {
        IOUtils.copy(in, out);
    }

    public String getDataAsString() {
        return out.toString("UTF-8");
    }
}

什么样的InputStream(或任何其他解决方案)可以让我在一端附加数据并从另一端使用它们?

注意 :使用者需要具有基于InputStream的API(而非Reader )。

当您使用线程时,对于PipedInputStream/PipedOutputStream.对来说,这种情况很少见PipedInputStream/PipedOutputStream.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM