【问题标题】:how to copy/split an inputstream in java?如何在java中复制/拆分输入流?
【发布时间】:2012-02-02 16:08:39
【问题描述】:

有没有办法将输入流复制/拆分为两个输入流,类似于 apache commons TeeOutputStream?我试图从流中过滤一些输入,同时在另一个线程中显示整个输入流。

【问题讨论】:

  • 如果 Apache 的 TeeOutputStream 满足您的要求,有什么理由不使用它吗?
  • @fge 这正是我的第一个想法。
  • 问:如何制作像 X 一样工作的东西?答:使用 X!
  • TeeOutputStream 拆分输出流,而我想拆分输入流。

标签: java io split copy inputstream


【解决方案1】:

你可能想要ProxyInputStream

例子:

ProxyInputStream pis = new ProxyInputStream(conn.getInputStream());

【讨论】:

    【解决方案2】:

    使用 org.apache.commons.io.input.TeeInputStream

    【讨论】:

    • 如果你想将它发送到单独的输出,请使用它,否则使用 ProxyInputStream
    【解决方案3】:

    您可以读取输入流,将其写入两个不同的输出流,然后从中读取。

    【讨论】:

      【解决方案4】:

      我会编写一个 InputStreamFilterer 类,它在构造函数中获取原始 InputStream。

      为 getOriginalStream 和 getFilteredStream 提供两种方法,并使用代理/委托包装过滤后的流,该代理/委托拦截读取的字节以取出您希望过滤掉的数据。

      这种方法假定您希望在读取流时对其进行过滤,并且对于您希望如何使用数据很天真。还要注意字符编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-18
        • 2018-01-27
        相关资源
        最近更新 更多