예제 #1
0
 public void ExtractZip(Stream inputStream, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime, bool isStreamOwner)
 {
     if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null))
     {
         throw new ArgumentNullException(nameof(confirmDelegate));
     }
     _continueRunning = true;
     _overwrite = overwrite;
     _confirmDelegate = confirmDelegate;
     _extractNameTransform = new WindowsNameTransform(targetDirectory);
     _fileFilter = new NameFilter(fileFilter);
     _directoryFilter = new NameFilter(directoryFilter);
     _restoreDateTimeOnExtract = restoreDateTime;
     using (_zipFile = new ZipFile(inputStream))
     {
         if (_password != null)
         {
             _zipFile.Password = _password;
         }
         _zipFile.IsStreamOwner = isStreamOwner;
         IEnumerator enumerator = _zipFile.GetEnumerator();
         while (_continueRunning && enumerator.MoveNext())
         {
             ZipEntry current = (ZipEntry)enumerator.Current;
             if (current.IsFile)
             {
                 if (_directoryFilter.IsMatch(Path.GetDirectoryName(current.Name)) && _fileFilter.IsMatch(current.Name))
                 {
                     ExtractEntry(current);
                 }
             }
             else if ((current.IsDirectory && _directoryFilter.IsMatch(current.Name)) && CreateEmptyDirectories)
             {
                 ExtractEntry(current);
             }
         }
     }
 }
예제 #2
0
 public PathFilter(string filter)
 {
     nameFilter_ = new NameFilter(filter);
 }
예제 #3
0
 public PathFilter(string filter)
 {
     nameFilter_ = new NameFilter(filter);
 }