zoukankan      html  css  js  c++  java
  • 处理sevenzipsharp 检查密码函数的Bug

    using (SevenZipExtractor extr = new SevenZipExtractor(tbPackagePath.Text, "www.pc6.com"))
                {
    
                    if (extr.Check())
                    {
                        MessageBox.Show("密码正确");
                    }
                    else
                    {
                        MessageBox.Show("密码不正确");
                    }
                }

    这一段是检查压缩包密码是否正确,发现360压缩的zip,不管正不正确,都返回true,

    修改以下源码(ArchiveExtractCallback.cs),避免此错误

    public void SetOperationResult(OperationResult operationResult)
            {
                if (operationResult != OperationResult.Ok && ReportErrors)
                {
                    switch (operationResult)
                    {
                        case OperationResult.CrcError:
                            AddException(new ExtractionFailedException("File is corrupted. Crc check has failed."));
                            break;
                        case OperationResult.DataError:
                            AddException(new ExtractionFailedException("File is corrupted. Data error has occured."));
                            break;
                        case OperationResult.UnsupportedMethod:
                            AddException(new ExtractionFailedException("Unsupported method error has occured."));
                            break;
                        default:
                            AddException(new ExtractionFailedException("An unknown error."));
                            break;
                    }
                }
                else
                {
                    if (_fileStream != null && !_fileIndex.HasValue)
                    {
                        try
                        {
                            _fileStream.BytesWritten -= IntEventArgsHandler;
                            _fileStream.Dispose();
                        }
                        catch (ObjectDisposedException) { }
                        _fileStream = null;
                        GC.Collect();
                        GC.WaitForPendingFinalizers();
                    }
                    var iea = new FileInfoEventArgs(
                        _extractor.ArchiveFileData[_currentIndex], PercentDoneEventArgs.ProducePercentDone(_doneRate));                
                    OnFileExtractionFinished(iea);
                    if (iea.Cancel)
                    {
                        Canceled = true;
                    }
                }
            }
    

      

  • 相关阅读:
    暑假周进度总结(一)
    第十七周进度总结
    大二下学期软件工程概论总结
    第十六周进度总结
    程序员修炼之道读书笔记(三)
    程序员修炼之道读书笔记(二)
    《程序员修炼之道》读书笔记(一)
    第十五周进度总结
    python之路--day6---文件处理
    python之路--day6--字符编码
  • 原文地址:https://www.cnblogs.com/-Object/p/5375530.html
Copyright © 2011-2022 走看看