法一:
引用Ionip.ZIP.DLll
/// <summary>
/// 压缩文件夹
/// </summary>
/// <param name="FilePath">需要压缩文件夹路径</param>
/// <param name="FileName">压缩后文件名</param>
/// <param name="SavePath">压缩后存放路径</param>
/// <param name="PassWord">压缩密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public static string SetZipFile(string FilePath, string FileName, string SavePath, string PassWord)
{
try
{
ZipFile zipfile = new ZipFile(SavePath + "\\" + FileName + ".zip", Encoding.Default);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
zipfile.AddDirectory(FilePath);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
/// <summary>
/// 解压文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="ReleasePath">解压路径</param>
/// <param name="FileName">需要解压的文件名</param>
/// <param name="PassWord">解压密码 null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public static string ReleaseFile(string FilePath, string ReleasePath, string[] FileName, string PassWord)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
foreach (string filename in FileName)
zipfile[filename].Extract(ReleasePath);
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
/// <summary>
/// 解压全部文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="ReleasePath">解压路径</param>
/// <param name="PassWord">解压密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string ReleaseAllFile(string FilePath, string ReleasePath, string PassWord)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
foreach (ZipEntry zipentry in zipfile)
zipentry.Extract(ReleasePath);
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
/// <summary>
/// 从zip文件中移除文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="FileName">要移除的文件名集合</param>
/// <returns>异常消息,成功返回null</returns>
public string DelFile(string FilePath, string[] FileName)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
foreach (string filename in FileName)
zipfile.RemoveEntry(filename);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
/// <summary>
/// 向zip文件内添加文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="AddFilePath">要添加的文件路径集合</param>
/// <returns></returns>
public string AddFile(string FilePath, string[] AddFilePath)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
zipfile.AddFiles(AddFilePath);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
法二:
1本地安装Win.rar程序
2
string strzipPath = path + "\\" + Program.filename.Replace("\0", ""); //带解压的zip
System.Diagnostics.Process Process1 = new System.Diagnostics.Process();
Process1.StartInfo.FileName = "Winrar.exe";
Process1.StartInfo.CreateNoWindow = true;
Process1.StartInfo.Arguments = " x -p123456 " + strzipPath + " " + path;
Process1.Start();
path 解压到哪个路径,注意中间要有空格
x -p密码 待解压zip 解压到哪个路径 解压缩
a -p密码 压缩到哪个文件 压缩路径 压缩