调用ICSharpCode.SharpZipLib创建一个压缩文件,被压缩的文件夹中包含子目录,
在网上搜索了很多实例,发现或多或少均有点问题,经过实验发现原来其实很简单,根本不用递归什么的
代码如下:
public static void CreateZipFile(string filesPath, string zipFilePath)
{
if (!Directory.Exists(filesPath))
{
return;
}
ZipOutputStream stream = new ZipOutputStream(File.Create(zipFilePath));
stream.SetLevel(0); // 压缩级别 0-9
byte[] buffer = new byte[4096]; //缓冲区大小
string[] filenames = Directory.GetFiles(filesPath, "*.*", SearchOption.AllDirectories);
foreach (string file in filenames)
{
ZipEntry entry = new ZipEntry(file.Replace(filesPath, ""));
entry.DateTime = DateTime.Now;
stream.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
stream.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
stream.Finish();
stream.Close();
}
其中filesPath是被压缩的路径
zipFilePath是压缩文件的路径