当我们需要对一些文件进行打包或者压缩时,常常会选择rar或zip这种格式,而在C#语言中,我们可以通过System.IO.Compression和System.IO.Compression.FileSystem命名空间中的类来实现对rar和zip文件的压缩与解压。具体实现步骤如下:
1、压缩rar/zip文件
1.1 压缩单个文件
using System.IO.Compression;
public void CompressFile(string sourceFilePath, string targetFilePath)
{
using (var sourceStream = File.OpenRead(sourceFilePath))
using (var targetStream = File.Create(targetFilePath))
using (var archive = new ZipArchive(targetStream, ZipArchiveMode.Create))
{
var zipEntry = archive.CreateEntry(Path.GetFileName(sourceFilePath), CompressionLevel.Optimal);
using (var entryStream = zipEntry.Open())
{
sourceStream.CopyTo(entryStream);
}
}
}
以上代码示例展示了如何压缩单个文件至zip文件中,通过文件流操作,将源文件读取出来,然后创建要写入的zip文件,并将源文件写入到zip文件中。通过使用System.IO.Compression.ZIpArchive类,可以很轻松地实现文件压缩。
1.2 压缩多个文件
using System.IO.Compression;
public void CompressDirectory(string sourceDirectory, string targetFilePath)
{
ZipFile.CreateFromDirectory(sourceDirectory, targetFilePath, CompressionLevel.Optimal, false);
}
以上代码示例展示了如何压缩多个文件至zip文件中,通过System.IO.Compression.ZipFile类提供的CreateFromDirectory方法,可以很方便地对文件夹下所有文件进行压缩,同时设置压缩级别和是否包含根目录。
2、解压rar/zip文件
2.1 解压单个文件
using System.IO.Compression;
public void DecompressFile(string sourceFilePath, string targetDirectory)
{
ZipFile.ExtractToDirectory(sourceFilePath, targetDirectory);
}
以上代码示例展示了如何解压单个zip文件,通过System.IO.Compression.ZipFile类提供的ExtractToDirectory方法,可以很方便地将zip文件中的内容解压到指定的目录下。
2.2 解压多个文件
using System.IO.Compression;
public void DecompressFile(string sourceFilePath, string targetDirectory)
{
using (var archive = ZipFile.OpenRead(sourceFilePath))
{
foreach (var entry in archive.Entries)
{
var filePath = Path.Combine(targetDirectory, entry.FullName);
entry.ExtractToFile(filePath, true);
}
}
}
以上代码示例展示了如何解压多个文件,通过System.IO.Compression.ZipFile类提供的OpenRead方法打开要解压的zip文件,然后遍历zip文件中的每一个entry,再逐个将entry内容解压到指定的目录下。
至此,关于C#压缩或解压rar/zip文件方法的实现分析已经介绍完毕。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#压缩或解压rar、zip文件方法实例 - Python技术站