从zip格式规范http://en.wikipedia.org/wiki/Zip开始,可以将具有相同文件名的两个文件添加到单个zip存档文件中。 例如,我将拉链看起来像
foo.zip
--bar.txt
--bar.txt
--3rd.txt
有谁知道要做到这一点?
我尝试了linux实用程序zip
和unzip
,它总是覆盖以前添加的zip条目。
Java类java.util.zip.ZipFile也不起作用。
答案 0 :(得分:3)
执行此操作的一种方法是最初使用唯一名称创建zip - 例如 bar.txt , car.txt 和 3rd.txt 。然后在二进制编辑器中打开生成的zip文件并搜索 car.txt 并将其替换为 bar.txt 。
请注意,应该更换两次需要替换的文件名 - 一个位于文件的本地文件头中(位于zip中间的某个位置),另一个位于中心目录(靠近末尾的某个位置)拉链)。
如果您需要以编程方式执行此操作,我建议您实际解析中心目录以查找各种标头中文件名的确切位置,而不是简单的搜索和替换以避免误报的可能性。这不是一个非常复杂的格式。
请注意,当您尝试解压缩此类zip时,根据您用于解压缩的程序以及您设置的选项,当您解压缩文件名的第二个副本时,可能会收到有关已存在文件的警告