【问题标题】:How to archive (using Zip) into multiple output files如何归档(使用 Zip)到多个输出文件
【发布时间】:2012-08-30 01:03:03
【问题描述】:

在 Android 中,我想将一些文件打包到 Zip 存档中(使用 java.util.zip)。但是我对输出文件的大小有限制 - 那么是否可以将它们打包成多个固定大小的文件?

【问题讨论】:

  • 我认为Zip格式本身不支持这个功能,有Rar格式支持它。
  • 但它在 Android API 中不可用,对吧?
  • 是的,它不可用,但可以自己实现。
  • @yrajabi 我当然可以。但是,如果它已经存在,为什么还要麻烦;)好吧,最终它不是,但至少我知道。
  • 如果您的 zip 存档以后只能由您自己使用,那么您可以轻松使用 PrimosK 所说的自定义解决方案。

标签: java android zip archive zipfile


【解决方案1】:

如果你这样做会怎样:

假设您知道(大致)文件的压缩率...您首先获取不超过 2MB 的少数文件。如果压缩率为 50%,最后你会得到 1MB 的文件。你重复这个过程,直到你压缩所有文件......

关于一个大文本文件,我建议这样做。读取文件并将其写入两个/三个/四个单独的文件。您可以使用FileInputStreamFileOutputStream 执行此操作...压缩每个部分。解压缩后,在File(Input/Output)Stream 的帮助下再次将它们粘合在一起。

【讨论】:

  • 可能会有一些小文本文件——在这里它可以工作。但也会有一个大的、单一的文件——除了将它分成几部分之外别无他法。
  • 在压缩之前拆分一个大文件怎么样?解压后再次粘在一起。
  • 当然,但我怎样才能做到这一点?
【解决方案2】:

我们最近需要做一些类似的事情(不是在 Android 上,但原理是一样的)。我们提出了一个MultiFileOutputStream,它写入一系列固定大小的“块”,以及一个相应的input stream,它再次将这些块重新组合成一个流。我们将commons-compress TAR 流放在多文件流之上,但您同样可以使用 zip 流。

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多