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); } } } }
public PathFilter(string filter) { nameFilter_ = new NameFilter(filter); }