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

tri*_*ous 13 zip

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

\n
folder1/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file1\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name\n--------  ------  ------- ---- ---------- ----- --------  ----\n       5  Stored        5   0% 2023-04-20 13:54 3bb935c6  folder1/file1\n--------          -------  ---                            -------\n       5                5   0%                            1 file\n
Run Code Online (Sandbox Code Playgroud)\n
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name\n--------  ------  ------- ---- ---------- ----- --------  ----\n       0  Stored        0   0% 2023-04-20 13:54 00000000  folder1/\n       5  Stored        5   0% 2023-04-20 13:54 3bb935c6  folder1/file1\n--------          -------  ---                            -------\n       5                5   0%                            2 files\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

Ste*_*itt 20

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

\n

由于没有单独目录条目的 ZIP 文件是有效的,因此程序不应该\xe2\x80\x99 对它们做出任何假设。

\n

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

\n