C#对文件夹进行压缩和解压,使用System.IO.Compression和System.IO.Compression.FileSystem进行处理。
包括ZipFile 类、ZipArchive 类、ZipArchiveEntry 类,通过这几个类的有机结合,可以处理各种问题。
一、把一个文件夹压缩为一个文件
ZipFile.CreateFromDirectory(sourceDirectory, destinationFile);
sourceDirectory:源文件夹
destinationFile:压缩后的文件
二、把一个压缩文件进行解压
ZipFile.ExtractToDirectory(sourceFile, destinationDirectory);
sourceFile:源文件,准备解压的文件
destinationDirectory:目标文件夹
三、通过ZipArchiveEntry,解压某一个文件
string zipPath = @"c:\example\start.zip"; //准备解压的压缩文件
string extractPath = @"c:\example\extract";//目标文件夹
string fileName="readme.txt";//目标文件夹
using (ZipArchive archive = ZipFile.OpenRead(sourceFile))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName=fileName)
{
entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
}
}
}
四、通过ZipArchiveEntry,解压某一个文件为流
string zipPath = @"c:\example\start.zip";
string extractPath = @"c:\example\extract";
string fileName="readme.txt";
using (ZipArchive archive = ZipFile.OpenRead(sourceFile))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.Equals(fileName))
{
Stream sm = entry.Open();
returm sm;
}
}
}