ZipEntry的路径名的文件分隔符



ZIP条目存储条目的完整路径名,因为(我相信下一部分)ZIP存档不是按目录组织的。元数据包含关于文件应该如何存储(在目录中)的信息。

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

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

我使用的是Java,ZipEntry的方法.getName()使用Windows文件分隔符为我提供了路径。如果我使用javaFile.separator分隔符使其在另一个操作系统上工作就足够了吗?还是我必须尝试用每个可能的分隔符来查找我的文件?

荣誉答对奖

@Eren Yilmaz给出的答案是正确的,描述了许多工具的功能(甚至是你可以自己编码的工具)。但是,考虑到.zip标准清楚地记录了它是如何的,正确的答案必须更新

.zip文件规范规定:

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

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

有些应用程序,特别是自定义zip创建代码,可以在不同的zip条目上混合分隔符,所以不要忘记签出每个条目。

相关内容

  • 没有找到相关文章

最新更新