【问题标题】:Java: OutputStream and InputStreamJava:输出流和输入流
【发布时间】:2010-12-09 15:31:55
【问题描述】:

我有一个来自 "apache bzi2 library" 的 CBZip2OutputStream 类,它可以将二进制数据流转换为 bzi2 数据流。 但我需要存档一个字符串。 因此,我认为,我应该从该输出流创建一个输入流,将该数据写入输出流并从输入流读取存档数据......但是如何链接输出流和输入流?

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以从输入流中读取并写入输出流。这是一种常见的做法。 IOUtils.copy()(来自 jakarta commons)会这样做,因此您不需要实现循环。

    您也可以使用 PipedInputStream 和 PipedOutputStream。

    【讨论】:

      【解决方案2】:

      首先,您可能需要一个 DataOutputStream:它被设计用来获取原语和对象并将它们转换为字节。它也处理字符串。

      接下来,使用管道 I/O:PipedInputStream 和 PipedOutputStream。您可以使用它们将流链接在一起,类似于从命令行将输入从一个进程传递到另一个进程。

      【讨论】:

        【解决方案3】:

        您可以使用多种方法从 OutputStream 中获取 InputStream。

        • 将数据写入内存缓冲区 (ByteArrayOutputStream) 获取 byteArray 并使用 ByteArrayInputStream 再次读取。如果您确定您的数据适合内存,这是最好的方法。
        • 将您的数据复制到一个临时文件并读回。
        • 使用管道:这是内存使用和速度的最佳方法(您可以充分利用多核处理器),也是 Oracle 提供的标准解决方案。
        • 使用“循环缓冲区”或通过外部库的管道。

        这是complete tutorial

        【讨论】:

          猜你喜欢
          • 2017-06-09
          • 1970-01-01
          • 2012-05-16
          • 2019-01-25
          • 1970-01-01
          • 2012-07-19
          • 2012-11-17
          • 2011-06-06
          • 1970-01-01
          相关资源
          最近更新 更多