/// <summary> /// 解压缩一个 zip 文件。 /// </summary> /// <param>The ziped file.</param> /// <param>The STR directory.</param> /// <param>zip 文件的密码。</param> /// <param>是否覆盖已存在的文件。</param> public void UnZip(string zipedFile, string strDirectory, string password, bool overWrite) { if (string.IsNullOrEmpty(zipedFile)) { throw new ArgumentException(zipedFile); } if (string.IsNullOrEmpty(strDirectory)) { throw new ArgumentException(strDirectory); } if (string.IsNullOrEmpty(password)) { throw new ArgumentException(password); } if (strDirectory == "") { strDirectory = Directory.GetCurrentDirectory(); } if (!strDirectory.EndsWith("\\")) { strDirectory = strDirectory + "\\"; } try { using (var s = new ZipInputStream(File.OpenRead(zipedFile))) { s.Password = password; ZipEntry theEntry; while ((theEntry = s.GetNextEntry()) != null) { var directoryName = string.Empty; var pathToZip = theEntry.Name; if (pathToZip != "") { directoryName = Path.GetDirectoryName(pathToZip) + "\\"; } var fileName = Path.GetFileName(pathToZip); Directory.CreateDirectory(strDirectory + directoryName); if (fileName == "") continue; if ((!File.Exists(strDirectory + directoryName + fileName) || !overWrite) && (File.Exists(strDirectory + directoryName + fileName))) continue; using (var streamWriter = File.Create(strDirectory + directoryName + fileName)) { var data = new byte[2048]; while (true) { var size = s.Read(data, 0, data.Length); if (size > 0) streamWriter.Write(data, 0, size); else break; } streamWriter.Close(); } } s.Close(); } } catch (IOException ioex) { throw new IOException(ioex.Message); } catch (Exception ex) { throw new Exception(ex.Message); } }
四.总结:
以上是对SharpZipLib组件的相关介绍,本文的讲解上比较的浅显,如果需要深入的学习可以进入官网进行详细的学习。组件的功能是很强大的,如何在项目中使用组件,完成我们在项目中需要实现的功能,这就是对每个开发者提出了要求,需要我们仔细的去考虑。
任何学习都需要我们自己去探索和思考,对于一个开发者来说,最重要的就是思考,因为在我们的职业生涯中,没有什么的重要性能够超过思考。如果有不足之处还望各位读者包含,并留言指正。
您可能感兴趣的文章: