【问题标题】:Is it possible to have a ZipOutputstream or GZIPOutputStream in Android that can be incrementally added to?是否有可能在 Android 中有一个 ZipOutputstream 或 GZIPOutputStream 可以增量添加?
【发布时间】:2014-09-01 22:48:12
【问题描述】:

我的应用会产生大量输出,但只会持续很长时间。每次有新的输出添加它只是一个字符串(价值几百字节)。

如果我可以增量(即追加)添加到预先存在的 GZIP(或 Zip)文件,它将大大简化我的代码。这甚至可能吗(特别是在 Java 中)?

我正在寻找一种解决方案,该解决方案将创建一个可由 3rd 方应用程序打开的文件。

我意识到我可以解压缩文件,添加额外的文本并再次将其压缩为一个新的 blob。

谢谢

PVS

【问题讨论】:

  • Zip 和 GZip 文件格式不允许同时读写访问。
  • 您可以附加到 GZipOutputStream:format 允许它。但是,读取仍在由应用程序的其他部分编写的文件的应用程序本质上设计不佳,并且可能实施不佳。要做到这一点相当困难,尤其是要正确处理各种错误情况。

标签: java android zip gzip


【解决方案1】:

是的。请参阅 zlib 分发的示例目录中的 C 语言示例:gzlog.hgzlog.c。它正是这样做的,允许您将短数据附加到 gzip 文件中。它这样做很有效,在达到阈值之前不压缩添加,然后压缩到目前为止尚未压缩的内容。每次添加后,gzip 文件都包含添加内容,并且是有效的 gzip 文件。该代码还可以防止在追加操作过程中发生系统崩溃,并在下一次追加操作时恢复文件。

尽管格式允许,但此代码并不简单地连接短 gzip 流。这将导致非常糟糕的压缩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多