SharpZipLib.GZip 如何压缩目录
时间: 2023-07-26 21:20:30 浏览: 51
SharpZipLib.GZip只能压缩单个文件,不能直接压缩目录。如果要压缩目录,需要先将目录下的所有文件逐个进行压缩,再将压缩后的文件打包成一个压缩包。
以下是示例代码:
```csharp
using System;
using System.IO;
using ICSharpCode.SharpZipLib.GZip;
public static void CompressDirectory(string directoryPath, string outputPath)
{
using (var outputStream = new FileStream(outputPath, FileMode.Create))
using (var gzipStream = new GZipOutputStream(outputStream))
{
gzipStream.SetLevel(5); // 设置压缩级别,可选值为 0-9,值越大,压缩比越高,但耗费的时间也越长
var files = Directory.GetFiles(directoryPath, "*", SearchOption.AllDirectories);
foreach (var file in files)
{
using (var inputStream = new FileStream(file, FileMode.Open, FileAccess.Read))
{
var entryName = file.Substring(directoryPath.Length + 1).Replace("\\", "/");
var entry = new ZipEntry(entryName);
entry.Size = inputStream.Length;
gzipStream.PutNextEntry(entry);
inputStream.CopyTo(gzipStream, 4096);
}
}
gzipStream.Finish();
}
}
```
该方法会将指定路径下的所有文件逐个进行压缩,并将压缩后的文件打包成一个 GZip 压缩包。使用时,只需要调用 `CompressDirectory` 方法,传入要压缩的目录路径和输出文件路径即可。