1

根据 zip 格式规范http://en.wikipedia.org/wiki/Zip,可以将两个具有相同文件名的文件添加到单个 zip 存档文件中。例如,我会让一个 zip 看起来像

foo.zip
    --bar.txt
    --bar.txt
    --3rd.txt

有谁知道要做到这一点?我尝试了 linux 实用程序zipunzip它总是会覆盖之前添加的 zip 条目。Java 类 java.util.zip.ZipFile 也不起作用。

4

1 回答 1

4

一种方法是首先使用唯一名称创建 zip,例如bar.txtcar.txt3rd.txt。然后在二进制编辑器中打开生成的 zip 文件并搜索car.txt并将其替换为bar.txt

请注意,您需要替换的文件名应该有两次出现 - 一次在文件的本地文件头中(在 zip 中间的某个位置),一个在中央目录中(在 zip 末尾附近的某个位置) .

如果您需要以编程方式执行此操作,我建议您实际解析中央目录以查找各种标题中文件名的确切位置,而不是简单的搜索和替换以避免误报的机会。这不是一个非常复杂的格式。

请注意,当您尝试像这样解压缩 zip 时,可能会在解压缩文件名的第二个副本时收到有关文件已存在的警告,具体取决于您用于解压缩的程序以及您设置的选项。

于 2013-07-14T11:51:27.273 回答