C#使用SharpCompress解压缩文件(.rar.zip)
C#使用SharpCompress解压缩文件(.rar.zip)
添加 SharpCompress Nuget包
发布dll
C#源码 - 压缩文件
C# 全选
/// <summary>
/// 压缩文件
/// </summary>
/// <param name="zipFileName">文件名称,如:d:\abc.zip</param>
/// <returns></returns>
public bool Packing(string zipFileName)
{
#region 压缩zip文件
////解决中文文件名乱码问题
SharpCompress.Common.ArchiveEncoding ArchiveEncoding = new SharpCompress.Common.ArchiveEncoding();
ArchiveEncoding.Default = Encoding.GetEncoding("utf-8");
SharpCompress.Writers.WriterOptions options = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate);
options.ArchiveEncoding = ArchiveEncoding;
using (var writer = SharpCompress.Archives.ArchiveFactory.Create(ArchiveType.Zip))
{
foreach (var file in this.Files)
{
writer.AddEntry(Path.GetFileName(file.OriginalFileName), file.OriginalFileName);
}
writer.SaveTo(zipFileName, options);
}
#endregion
this.PackageFileBody = File.ReadAllBytes(zipFileName);
return true;
}
C#源码 - 解压缩文件
C# 全选
private void button1_Click(object sender, EventArgs e)
{
var fileName = @"d:\DemoFiles.rar";
var dir = Path.Combine(Application.StartupPath, "_" + DateTime.Now.ToString("yyMMddHHmmss"));
//创建目录
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
if (!Directory.Exists(dir))
{
MessageBox.Show("创建解压缩目录失败!\r\n" + dir);
return;
}
//
//C#使用SharpCompress解压缩文件(.rar.zip)
//
//设置解压文件名称格式,防止解压后的文件名称出现乱码情况
SharpCompress.Readers.ReaderOptions options = new SharpCompress.Readers.ReaderOptions();
options.ArchiveEncoding.Default = Encoding.GetEncoding("utf-8");
IArchive archive = ArchiveFactory.Open(fileName, options);
foreach (IArchiveEntry archiveEntry in archive.Entries)
{
if (!archiveEntry.IsDirectory)
{
archiveEntry.WriteToDirectory(dir, new ExtractionOptions
{
ExtractFullPath = true,
Overwrite = true,
});
}
}
}
测试
DemoFiles.rar文件内容
运行程序,解压缩到当前应用程序目录下
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网