【问题标题】:Getting an InputStream of Writer using standard Java library使用标准 Java 库获取 Writer 的 InputStream
【发布时间】:2012-02-03 19:01:47
【问题描述】:

我有一个将数据写入 OutputStream 但需要将 OutputStream 的内容作为 InputStream 返回的方法

public InputStream getInputStreamOfData(type param) {
    // ..... data 
    OutputStreamWriter writer = new OutputStreamWriter();
    writer.write(data);
    // convert writer object to an InputStream 
}

我遇到了一些库来执行此操作,例如 IOUtils 和其他基于线程的方法。有没有一种简单的方法可以使用标准 Java 库来实现这一点?我想将编写器中的内容作为 InputStream 返回,以供调用方法使用。

谢谢!

【问题讨论】:

    标签: java stream inputstream outputstream


    【解决方案1】:

    写入ByteArrayOutputStream,然后获取字节数组,并从该字节数组返回ByteArrayInputStream

    【讨论】:

    • 如果数据是文本的,他也可以使用StringWriter/StringReader,会稍微好一点。
    【解决方案2】:

    我认为正确的方法是使用 PipedInputStream。它就像 unix 管道(高级)。 PipedInputStream 构造函数采用 PipedOutputStream,所以如果你写到 PipedOutputStream,你会得到你想要的!

    祝你好运!

    【讨论】:

    • 来自 javadoc:通常,数据由一个线程从 PipedInputStream 对象读取,数据由其他线程写入相应的 PipedOutputStream。不建议尝试从单个线程中同时使用这两个对象,因为这可能会使线程死锁
    • 是的。这就是我想避免使用 PipedInputStream 的原因之一
    猜你喜欢
    • 2018-04-07
    • 2014-04-08
    • 2016-07-22
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多