C#解压zip⽂件
压缩文件怎么解压因为⼯作中需要在C#项⽬中将多张图⽚⼀次上传,最近两天⼀直在研究,⽹上提供的⽅法很多,整理了⼀下,整合出⼀个⽅法,需要添加引⽤ Shell32.dll,可以在Windows\system32中到它。
代码如下:
#region 解压zip格式的⽂件
/// <summary>
/// 功能:解压zip格式的⽂件。
/// </summary>
/// <param name="zipFilePath">压缩⽂件路径</param>
/// <param name="unZipDir">解压⽂件存放路径,为空时默认与压缩⽂件同⼀级⽬录下,跟压缩⽂件同名的⽂件夹</param>
/// <param name="err">出错信息</param>
/// <returns>解压是否成功</returns>
public bool UnZipFile(string zipFilePath, string unZipDir, out string err)
{
err = "";
if (zipFilePath.Length == 0)
{
err = "压缩⽂件不能为空!";
return false;
}
else if (!zipFilePath.EndsWith(".zip"))
{
err = "⽂件格式不正确!";
return false;
}
else if (!System.IO.File.Exists(zipFilePath))
{
err = "压缩⽂件不存在!";
return false;
}
//解压⽂件夹为空时默认与压缩⽂件同⼀级⽬录下,跟压缩⽂件同名的⽂件夹
if (unZipDir.Length == 0)
unZipDir = zipFilePath.Replace(System.IO.Path.GetFileName(zipFilePath),
System.IO.Path.GetFileNameWithoutExtension(zipFilePath));
if (!unZipDir.EndsWith("\\"))
unZipDir += "\\";
if (!System.IO.Directory.Exists(unZipDir))
System.IO.Directory.CreateDirectory(unZipDir);
try
{
Shell32.ShellClass sc = new Shell32.ShellClass();
Shell32.Folder SrcFolder = sc.NameSpace(zipFilePath);
Shell32.Folder DestFolder = sc.NameSpace(unZipDir);
Shell32.FolderItems items = SrcFolder.Items();
DestFolder.CopyHere(items, 20);
}
catch (Exception ex)
{
err = ex.Message;
return false;
}
return true;
}//解压结束
#endregion
参考:;