ZipForge:如何将Empty文件夹添加到存档?

时间:2016-01-14 09:20:35

标签: delphi zip

标题中的问题。 我没有设法找到一种方法来将空文件夹添加到存档或在存档内创建一个空目录。

如果我只是通过掩码添加文件和文件夹,它可以正常工作,但我必须逐个添加文件而不是所有文件(有原因)。

如何在存档中创建一个空目录?

2 个答案:

答案 0 :(得分:0)

ZIP文件不明确支持文件夹的概念。而是使用路径分隔符指定文件名,而ZIP文件工具则以此方式推断出预期的结构。

因此,伪造空文件夹的方式是创建一个名称以尾随路径分隔符结尾的空文件。

我不知道ZipForge,但在内置的TZipFile中你会这样做:

ZipFile := TZipFile.Create;
try
  ZipFile.Open('C:\desktop\temp.zip', zmWrite);
  ZipFile.Add(TBytes(nil), 'foo/');
finally
  ZipFile.Free;
end;

答案 1 :(得分:0)

我找到了一种更正确地创建空文件夹的方法。 正如David Heffernan所说,我们应该添加标题为我们文件夹的空文件:

FullFolderName = 'foo\bar'
ZipForge.AddFromBuffer(FullFolderName, nil^, 0); 

注意: bar 是我们的空文件夹,应该位于 foo 文件夹中。不要在路径的末尾加上反斜杠。

然后我们应该更改"文件夹"的属性。在档案馆内,因为我们的"文件夹"具有与文件相同的属性。要做到这一点,我们应该致电:

ZipForge.ChangeFilesAttr(FullFolderName, ZFDirectoryAttr);

ZFDirectoryAttr是在ZipForge.pas中声明的常量,等于16。