【发布时间】:2010-09-14 17:18:04
【问题描述】:
自从我完成 Java I/O 以来已经有一段时间了,我不知道使用 Zip 和 GZip 文件的最新“正确”方法。我不一定需要完整的工作演示——我主要是在寻找要使用的正确接口和方法。是的,我可以查找任何关于此的随机教程,但性能是一个问题(这些文件可能会变得非常大),我确实关心使用最好的工具来完成这项工作。
我将要实现的基本流程:
- 将一堆文件(可能经过压缩、gzip 压缩或两者兼有)下载到临时文件夹。
- 将所有提取的文件添加到临时文件夹中的新 zip 文件中。
输入文件可能会被多次压缩和归档。例如,“完全提取”应该采用以下任何输入(我无法控制这些),并留下foo.txt:
foo.txt.gzfoo.txt.zipfoo.txt.gz.zipfoo.txt.zip.gz- ...
foo.txt.gz.gz.gz.zip.gz.zip.zip.gz.gz- ...
然后,我可能会留下foo.txt、bar.mp3、baz.exe - 所以我只需将它们全部添加到一个具有通用名称的新 zip 文件中。
问题:
- 由于文件大小是一个潜在问题,我应该快速使用哪个(接口/类/方法):
- 解压 zip 文件?
- 解压 gzip 文件?
- 写 zip 文件?
- 在写回磁盘之前,我是否最好将各个提取的文件保存在内存中?或者,
- 潜在的大文件是否会成为一个坏主意?
【问题讨论】: