使用SharpZipLib打包空目录

时间:2012-02-16 00:42:34

标签: c# zip

我想打包使用SharpZipLib压缩一些文件夹。示例结构

directory1:
    directory2:
         file1
    filde2
    directory3:
        directory4:

当我从这里使用c#代码打包它时:

http://wiki.sharpdevelop.net/SharpZipLib-Zip-Samples.ashx#Create_a_Zip_with_full_control_over_contents_0

我收到的邮件存档没有directory3directory4

我的问题是如何打包以获取包含directory3directory4的存档。

2 个答案:

答案 0 :(得分:4)

您可以让程序将文件夹添加为条目。

在每个文件夹的循环中添加以下代码。

//Here we create a path for a new entry,
//but this time with the '\' in the end, its a folder
string sEntry = sFolder.Substring(iFolderOffset) + "\\";
sEntry = ZipEntry.CleanName(sEntry);
ZipEntry zeOutput = new ZipEntry(sEntry);
zsOutput.PutNextEntry(zeOutput);
zsOutput.CloseEntry();

我还没有测试解压缩。

答案 1 :(得分:2)

 FastZip fastZip = new FastZip();

 fastZip.CreateEmptyDirectories = true;
 // Include all files by recursing through the directory structure
 bool recurse = true; 
 // Dont filter any files at all 
 string filter = null;
 fastZip.CreateZip("fileName.zip", @"C:\SourceDirectory", recurse, filter);

一个警告是它无法处理UTF-8文件名。

以下是文档维基的链接:

http://wiki.sharpdevelop.net/SharpZipLib_FastZip.ashx