DotNetZip 的使用

Usage of DotNetZip

我正在使用 DotNetZip 库来压缩文件。我的代码如下

String[] filenames = { "D:\Data\ReadMe.txt", "c:\data\collection.csv","c:\ProgramFiles\reports AnnualSummary.pdf"};
using (ZipFile zip = new ZipFile())
{
   zip.AddFiles(filenames, "files");
   zip.Save("Archive.zip");
}

现在创建 Archive.zip 时,会在存档中为存储它们的文件创建同名文件夹(例如 Data、ProgramFiles 等)。

我的目标是压缩 Archive.zip 中的所有文件,压缩包中没有任何文件夹。我怎样才能实现它?

A​​ddFiles 有一个重载以展平 zip 存档中的目录结构

public void AddFiles(
    IEnumerable<string> fileNames,
    bool preserveDirHierarchy,
    string directoryPathInArchive
)

http://dotnetzip.herobo.com/DNZHelp/html/c64e89d3-2f1f-2886-16bc-291746b46718.htm

zip.AddFiles(filenames, false, "files");

第二个参数 preserveDirHierarchy 可以作为 false 传递,以使所有文件都位于 zip 存档的根目录中。执行此操作时请注意不要有同名文件。它将抛出重复文件名的异常。