为什么有时会在 ZIP 文件中明确列出目录?

为什么有时会在 ZIP 文件中明确列出目录?

在构建提取 ZIP 文件的应用程序时,我注意到有时 ZIP 文件明确包含目录条目,有时则不包含。例如给出以下结构

folder1/
└── file1

我发现通过以下方式列出内容时给出以下不同输出的文件unzip -lv file.zip

 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       5  Stored        5   0% 2023-04-20 13:54 3bb935c6  folder1/file1
--------          -------  ---                            -------
       5                5   0%                            1 file
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2023-04-20 13:54 00000000  folder1/
       5  Stored        5   0% 2023-04-20 13:54 3bb935c6  folder1/file1
--------          -------  ---                            -------
       5                5   0%                            2 files

请注意第二个中明确指定的文件夹。

这里的标准是什么?程序通常会假设如何处理这个问题吗?两者之一有优势吗?

答案1

标准没有指定这一点,但常见的做法是将目录存储为单独的条目,以便也可以存储目录元数据。

由于 ZIP 文件没有单独的目录条目是有效的,程序不应该以任何方式对它们做出假设。

(使用 Info-Zip 时zip,该-D标志会跳过存储目录条目。)

相关内容