C# 解压zip压缩文件

此方法需要在程序内引用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;

        }//解压结束


 

 

你可能感兴趣的:(zip)