java - ZipEntry 的路径名称的文件分隔符?

标签 java path zip path-separator

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

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

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

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

荣誉正确答案提及

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

最佳答案

.zip file specification状态:

4.4.17.1 The name of the file, with optional relative path. The path stored MUST not contain a drive or device letter, or a leading slash. All slashes MUST be forward slashes '/' as opposed to backwards slashes '\' for compatibility with Amiga and UNIX file systems etc. If input came from standard input, there is no file name field.

关于java - ZipEntry 的路径名称的文件分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13846000/

相关文章:

java - 并行度为 1 的串行和并行执行之间的区别

java - 将 jar 文件安装到 Maven 构建中的特定位置

javascript - 通过字符串路径访问嵌套的 JavaScript 对象和数组

java - 谷歌云数据存储:Can I put more than 5 entities in one transaction

Java - 库路径错误

javascript - 如何删除NodeJs目录中的所有json文件

python - 如何使用python获取zip文件中所有文件(或给定文件名)的偏移值?

c# - 有没有办法用另一个库解压缩 DynaZip Max 文件? F.E. DotNetZip

gradle - gradle 构建中不需要的 tar、zip、jar 分布

java - 为运行时 spring-context 建模引用文档和渲染引擎