29

ZIP 条目存储条目的完整路径名,因为(我确定下一部分)ZIP 存档没有组织为目录。元数据包含有关文件应该如何存储(在目录内)的信息。

如果我在 Windows 中创建 ZIP 文件,当我在另一个操作系统(例如 Mac OS X)中解压缩数据时,文件结构将保持与以前在 Windows 中的相同。这是因为解压缩器旨在处理此问题,还是因为 ZIP 中的文件分隔符是标准的?

我问这个是因为我试图使用压缩文件的名称在 ZIP 文件中找到一个条目。但是我应该使用哪个文件分隔符使其在 Windows 以外的系统中工作?

我正在使用 Java,method: .getName()of theZipEntry给了我使用 Windows 文件分隔符的路径\。如果我使用 javaFile.separator分隔符使其在另一个操作系统上工作就足够了吗?还是我必须尝试使用​​每个可能的分隔符查找我的文件?

荣誉正确答案提及

@Eren Yilmaz 给出的答案正确描述了许多工具(甚至是您可以自己编码的工具)的功能。但是鉴于 .zip 标准清楚地记录了它必须是怎样的,因此必须更新正确的答案

4

2 回答 2

25

.zip 文件规范指出:

4.4.17.1 文件名,带有可选的相对路径。存储的路径不得包含驱动器或设备号,或前导斜杠。所有斜杠必须是正斜杠“/”而不是反斜杠“\”,以便与 Amiga 和 UNIX 文件系统等兼容。如果输入来自标准输入,则没有文件名字段。

于 2017-06-06T10:49:00.330 回答
18

文件分隔符取决于创建 zip 文件的应用程序。一些应用程序使用系统文件分隔符,而一些应用程序使用“文明的”正斜杠“/”。因此,如果您正在创建 zip 文件然后使用它,那么您可以简单地使用正斜杠作为文件分隔符。如果 zip 文件是在其他地方创建的,那么您应该找出使用了哪个分隔符。我不知道一种简单的方法,但是您可以使用粗略的方法并在进行时检查两种分隔符类型。

某些应用程序,尤其是自定义邮政编码创建代码,可以在不同的邮政编码条目上混合分隔符,因此不要忘记检查每个条目。

于 2013-05-10T14:59:07.817 回答