如何判断一个压缩文件是否解压成功,如果这个压缩文件有密码, 我想一个一个试看到底哪个正确

解决方案 »

  1.   

    楼主,试着搜索ICSharpCode.SharpZipLib 然后研究一下.我正在用.不过好像没有密码这块的,你可以自己尝试写个
      

  2.   

     /// <summary>
            /// 解压缩
            /// </summary>
            /// <param name="file">待解压文件名(包含物理路径)</param>
            /// <param name="dir"> 解压到哪个目录中(包含物理路径)</param>
            public static bool UnpackFiles(string file, string dir)
            {
                try
                {
                    if (!Directory.Exists(dir))
                    {
                        Directory.CreateDirectory(dir);
                    }
                    ZipInputStream s = new ZipInputStream(File.OpenRead(file));
                    ZipEntry theEntry;
                    while ((theEntry = s.GetNextEntry()) != null)
                    {
                        string directoryName = Path.GetDirectoryName(theEntry.Name);
                        string fileName = Path.GetFileName(theEntry.Name);
                        if (directoryName != String.Empty)
                        {
                            Directory.CreateDirectory(dir + directoryName);
                        }
                        if (fileName != String.Empty)
                        {
                            FileStream streamWriter = File.Create(dir + 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;
                                }
                            }
                            streamWriter.Close();
                        }
                    }
                    s.Close();
                    return true;
                }
                catch (Exception)
                {
                    throw;
                }
            }