在工作中遇到需要用到压缩和解压文件的技术,于是在网上找了很多相关资料和demo,发现有很多不能直接使用,有很多问题,压缩出来的要么是空文件,要门是损坏文件,甚至有些直接编译不通过。综合了多位大牛的资料,我整理测试了一个压缩/解压的类文件,分享给大家。亲测可用~~~~
这里需要添加一个dll引用ICSharpCode.SharpZipLib.dll,点这里下载
需要注意的是:这个类只能操作ZIP格式的压缩文件,操作rar格式会有这样的报错:Wrong Local header signature: 0x21726152
1、下载解压
2、引用SharpZipLib.dll到项目中,在项目中点击项目右键-->添加引用-->浏览,找到刚解压的ICSharpCode.SharpZipLib.dll-->确认。
3、增加命名空间的引用。
<pre name="code" class="csharp"><span style="font-size:18px;">#region 命名空间的引用
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Checksums;
using System.IO;
#endregion</span>
下面是类文件内容
<span style="font-size:18px;">public static class DealZip
{
#region 压缩
#region 公开压缩方法
/// <summary>
/// 压缩文件或文件夹 ----带密码
/// </summary>
/// <param name="fileToZip">要压缩的路径-文件夹或者文件</param>
/// <param name="zipedFile">压缩后的文件名</param>
/// <param name="password">密码</param>
/// <param name="errorOut">如果失败返回失败信息</param>
/// <returns>压缩结果</returns>
public static bool Zip(string fileToZip, string zipedFile, string password, ref string errorOut)
{
bool result = false;
try
{
if (Directory.Exists(fileToZip))
result = ZipDirectory(fileToZip, zipedFile, password);
else if (File.Exists(fileToZip))
result = ZipFile(fileToZip, zipedFile, password);
}
catch (Exception ex)
{
errorOut = ex.Message;
}
return result;
}
/// <summary>
/// 压缩文件或文件夹 ----无密码
/// </summary>
/// <param name="fileToZip">要压缩的路径-文件夹或者文件</param>
/// <param name="zipedFile">压缩后的文件名&