ZipEntry路径名的文件分隔符?

Ord*_*iel 21 java zip path path-separator

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

如果我在Windows中创建ZIP文件,当我在另一个操作系统(例如Mac OS X)中解压缩数据时,文件结构将保持与以前一样在Windows中.这是因为unzipper是为处理这个而设计的,还是因为ZIP中的文件分隔符是标准的?

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

我使用Java和方法:.getName()ZipEntry让我使用Windows文件分隔符的路径\.如果我使用java File.separator分隔符使其在另一个操作系统上工作,这是否足够?或者我是否必须尝试使用​​每个可能的分隔符找到我的文件?

Ere*_*maz 15

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

某些应用程序,尤其是自定义zip创建代码,可以将分隔符混合在不同的zip条目上,因此请不要忘记查看每个条目.

  • 如果所有应用程序都遵循单词的规范,则不会出现stackoverflow。在回答问题时(2013年),我在zip文件中遇到了混合文件分隔符。我不再对zip文件进行编码,希望现在所有应用程序都能找到正确的路径。 (2认同)

Ed *_*all 15

.zip文件规范状态:

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

  • 现在您是给出文档引用的正确答案标题的所有者 (2认同)