C# 解压zip压缩文件

jopen 9年前

此方法需要在程序内引用ICSharpCode.SharpZipLib.dll 类库     /// <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 == string.Empty)              {                  //err = "压缩文件不能为空!";                  return false;              }              if (!File.Exists(zipFilePath))              {                  //err = "压缩文件不存在!";                  return false;              }              //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹              if (unZipDir == string.Empty)                  unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));              if (!unZipDir.EndsWith("\\"))                  unZipDir += "\\";              if (!Directory.Exists(unZipDir))                  Directory.CreateDirectory(unZipDir);                try              {                  using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath.ToLower())))                  {                        ZipEntry theEntry;                      while ((theEntry = s.GetNextEntry()) != null)                      {                          string directoryName = Path.GetDirectoryName(theEntry.Name);                          string fileName = Path.GetFileName(theEntry.Name);                          if (directoryName.Length > 0)                          {                              Directory.CreateDirectory(unZipDir + directoryName);                          }                          if (!directoryName.EndsWith("\\"))                              directoryName += "\\";                          if (fileName != String.Empty)                          {                              using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))                              {                                    int size = 2048;                                  byte[] data = new byte[2048];                                  while (true)                                  {                                      size = s.Read(data, 0, data.Length);                                      if (size > 0)                                      {                                          streamWriter.Write(data, 0, size);                                      }                                      else                                      {                                          break;                                      }                                  }                              }                          }                      }//while                  }              }              catch (Exception ex)              {                  //err = ex.Message;                  return false;              }              return true;          }//解压结束