使用ICSharpCode.SharpZipLib快速压缩大型文件夹代码
时间: 2023-12-12 10:02:04 浏览: 26
使用ICSharpCode.SharpZipLib库可以快速压缩大型文件夹,以下是示例代码:
```csharp
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
public static void CompressFolder(string folderPath, string zipFilePath)
{
//创建ZipOutputStream对象,用于压缩数据并写入到压缩文件中
using (ZipOutputStream zipStream = new ZipOutputStream(File.Create(zipFilePath)))
{
//设置压缩等级,0-9,0表示不压缩,9表示压缩率最高
zipStream.SetLevel(9);
//获取文件夹中所有文件和子文件夹
string[] files = Directory.GetFiles(folderPath, "*", SearchOption.AllDirectories);
//循环压缩每个文件
foreach (string file in files)
{
//创建ZipEntry对象,表示压缩文件中的一个条目
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
//设置压缩文件的时间戳
entry.DateTime = DateTime.Now;
//将条目添加到压缩流中
zipStream.PutNextEntry(entry);
//读取文件内容并写入到压缩流中
using (FileStream fileStream = File.OpenRead(file))
{
int bufferSize = 4096;
byte[] buffer = new byte[bufferSize];
int bytesRead = 0;
do
{
bytesRead = fileStream.Read(buffer, 0, bufferSize);
zipStream.Write(buffer, 0, bytesRead);
} while (bytesRead > 0);
}
}
//关闭压缩流
zipStream.Finish();
zipStream.Close();
}
}
```
你可以将上述代码封装成一个静态方法,然后在需要压缩文件夹的地方调用它即可。