2014-09-01 107 views
0

我的应用创建了大量的输出,但只有很长一段时间。每次有新的输出添加它只是一个字符串(几百字节价值)。是否可以在Android中有一个ZipOutputstream或GZIPOutputStream,可以增量添加到?

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

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

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

感谢

PVS

+0

Zip和GZip文件格式不允许同时读写访问。 – BevynQ 2014-09-01 23:43:02

+0

您可以追加到GZipOutputStream:[格式](http://www.gzip.org/zlib/rfc-gzip.html)允许。但是读取应用程序其他部分仍然在编写的文件的应用程序本质上设计得很差,并且可能执行不力。要做到这一点很困难,特别是要正确处理各种错误情况。 – EJP 2014-09-02 00:11:06

回答

0

是。请参阅zlib分发示例目录中的C中的此示例:gzlog.hgzlog.c。它的确如此,允许您将短小的数据附加到gzip文件。它可以非常有效地实现,通过不加压缩添加直到达到阈值,然后压缩尚未压缩的内容。在每次添加之后,gzip文件包含添加并且是有效的gzip文件。该代码还可以防止在追加操作过程中发生系统崩溃,并在下一次追加操作中恢复该文件。

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

相关问题