C# ZipFile:仅压缩文件夹的内容

C# ZipFile: zip only the contents of a folder

我正在使用 ZipFile.CreateFromDirectory 方法在 C# 中压缩一个目录:

private void createZIP()
{
    string startPath = @"c:\example\start";
    string zipPath = @"c:\example\result.zip";
    ZipFile.CreateFromDirectory(startPath, zipPath,  CompressionLevel.Fastest, true); 
}

它工作正常,但我只想要 zip 文件中 /start/ 文件夹的内容,而不是目录本身。

现在:

result.zip
--start
---- file1.txt
---- file2.txt

我想要什么:

result.zip
-- file1.txt
-- file2.txt

我怎样才能做到这一点?

ZIPFile.CreateFromDirectory 的最后一个参数,您为其传递值 true,确定目录本身是否应作为 ZIP 的根包含。如果您将其更改为 false,它应该可以如您所愿地工作。

ZipFile.CreateFromDirectory(startPath, zipPath,  CompressionLevel.Fastest, false); 

如果您想将功能从简单的压缩扩展到有条件的压缩

使用以下 link 部分[从现有 Zip 文件添加或删除文件]

Creating-Zip-Files-Easily-in-NET

并创建空目录使用以下 link

creating-directories-in-a-ziparchive-c-sharp-net-4-5