在.NET中,实现文件或数据压缩功能,常用的库有`System.IO.Compression`,它提供了`ZipFile`和`DeflateStream`等类来支持压缩和解压操作。以下是使用`ZipFile`类来压缩文件夹或文件的一个简单示例:
using System;
using System.IO;
using System.IO.Compression;
public class CompressionHelper
{
// 压缩文件夹
public static void ZipFolder(string sourceFolder, string destinationArchive)
{
// 确保源文件夹存在
if (!Directory.Exists(sourceFolder))
{
throw new InvalidOperationException("Source folder does not exist.");
}
// 创建或覆盖目标压缩文件
ZipFile.CreateFromDirectory(sourceFolder, destinationArchive);
Console.WriteLine($"Compression complete: {destinationArchive}");
}
// 压缩单个文件(如果需要的话)
public static void ZipFileSingle(string sourceFile, string destinationArchive)
{
// 创建一个新的Zip存档
using (var zipToOpen = new FileStream(destinationArchive, FileMode.Create))
{
using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
{
var entry = archive.CreateEntry(Path.GetFileName(sourceFile));
using (var entryStream = entry.Open())
using (var fileToCompress = File.OpenRead(sourceFile))
{
fileToCompress.CopyTo(entryStream);
}
}
}
Console.WriteLine($"Compression complete: {destinationArchive}");
}
}
// 示例用法
class Program
{
static void Main(string[] args)
{
string sourceFolder = @"C:\path\to\your\folder";
string destinationArchive = @"C:\path\to\your\archive.zip";
CompressionHelper.ZipFolder(sourceFolder, destinationArchive);
// 或者压缩单个文件
// string sourceFile = @"C:\path\to\your\file.txt";
// CompressionHelper.ZipFileSingle(sourceFile, @"C:\path\to\your\file.zip");
}
}
在这个示例中,`ZipFolder`方法用于压缩整个文件夹,而`ZipFileSingle`方法用于压缩单个文件。请根据你的需求选择使用。注意,在调用这些方法之前,请确保你拥有对源文件夹/文件的读取权限和对目标位置的写入权限。
这段代码演示了如何在.NET环境中使用`System.IO.Compression`命名空间下的类来创建ZIP文件。记得在使用之前,确保你的项目引用了这个命名空间。在.NET Core或.NET 5/6/7等较新版本的.NET中,这个命名空间是默认可用的。