/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { Stream inputStream = File.Open(zipFileName, FileMode.Open, FileAccess.Read, FileShare.Read); ExtractZip(inputStream, targetDirectory, overwrite, confirmDelegate, fileFilter, directoryFilter, restoreDateTime, true); }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating wether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } continueRunning_ = true; overwrite_ = overwrite; confirmDelegate_ = confirmDelegate; targetDirectory_ = targetDirectory; fileFilter_ = new NameFilter(fileFilter); directoryFilter_ = new NameFilter(directoryFilter); restoreDateTimeOnExtract_ = restoreDateTime; using (zipFile_ = new ZipFile(zipFileName)) { #if !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif System.Collections.IEnumerator enumerator = zipFile_.GetEnumerator(); while (continueRunning_ && enumerator.MoveNext()) { ZipEntry entry = (ZipEntry)enumerator.Current; if (entry.IsFile) { if (directoryFilter_.IsMatch(Path.GetDirectoryName(entry.Name)) && fileFilter_.IsMatch(entry.Name)) { if (events_ == null || events_.OnProcessFile(entry.Name)) { ExtractEntry(entry); } } } else if (entry.IsDirectory) { if (directoryFilter_.IsMatch(entry.Name) && CreateEmptyDirectories) { if (events_ == null || events_.OnProcessDirectory(entry.Name, true)) { ExtractEntry(entry); } } } else { // Do nothing for volume labels etc... } } } }
/// <summary> /// Extract the contents of a zip file held in a stream. /// </summary> /// <param name="inputStream">The seekable input stream containing the zip to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> /// <param name="isStreamOwner">Flag indicating whether the inputStream will be closed by this method.</param> 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("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 !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif zipFile_.IsStreamOwner = isStreamOwner; IEnumerator enumerator = zipFile_.GetEnumerator(); while (continueRunning_ && enumerator.MoveNext()) { var entry = (ZipEntry)enumerator.Current; if (entry.IsFile) { // TODO Path.GetDirectory can fail here on invalid characters. if (directoryFilter_.IsMatch(Path.GetDirectoryName(entry.Name)) && fileFilter_.IsMatch(entry.Name)) { ExtractEntry(entry); } } else if (entry.IsDirectory) { if (directoryFilter_.IsMatch(entry.Name) && CreateEmptyDirectories) { ExtractEntry(entry); } } else { // Do nothing for volume labels etc... } } } }
/// <summary> /// Exatract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> public void ExtractZip(string sSourceDir, string sDestinationDir, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter) { string zipFileName = sSourceDir.Substring(sSourceDir.LastIndexOf("\\") + 1, sSourceDir.Length - sSourceDir.LastIndexOf("\\") - 1); //For Password string[] Val = zipFileName.Split('_'); string UniID = Val[0]; string InstID = Val[1]; string sPassword = UniID + "" + InstID; if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } this.overwrite = overwrite; this.confirmDelegate = confirmDelegate; this.targetDirectory = sDestinationDir; this.fileFilter = new NameFilter(fileFilter); this.directoryFilter = new NameFilter(directoryFilter); inputStream = new ZipInputStream(File.OpenRead(sSourceDir)); //Password for Zip File inputStream.Password = sPassword; try { if (password != null) { inputStream.Password = password; } ZipEntry entry; while ((entry = inputStream.GetNextEntry()) != null) { if (this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name)) { ExtractEntry(entry); } } } finally { inputStream.Close(); } }
/// <summary> /// Extract the contents of a zip file held in a stream. /// </summary> /// <param name="inputStream">The seekable input stream containing the zip to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> /// <param name="isStreamOwner">Flag indicating whether the inputStream will be closed by this method.</param> 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("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 !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif zipFile_.IsStreamOwner = isStreamOwner; extractEnum_ = zipFile_.GetEnumerator(); totalCount_ = 0; while (continueRunning_ && extractEnum_.MoveNext()) { ZipEntry entry = (ZipEntry)extractEnum_.Current; totalCount_ += entry.Size; } extractEnum_.Reset(); doneCount_ = 0; ExtractUpdate(); } }
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("confirmDelegate"); } this.continueRunning_ = true; this.overwrite_ = overwrite; this.confirmDelegate_ = confirmDelegate; this.extractNameTransform_ = new WindowsNameTransform(targetDirectory); this.fileFilter_ = new NameFilter(fileFilter); this.directoryFilter_ = new NameFilter(directoryFilter); this.restoreDateTimeOnExtract_ = restoreDateTime; using (this.zipFile_ = new ZipFile(inputStream)) { if (this.password_ != null) { this.zipFile_.Password = this.password_; } this.zipFile_.IsStreamOwner = isStreamOwner; IEnumerator enumerator = this.zipFile_.GetEnumerator(); while (this.continueRunning_ && enumerator.MoveNext()) { ZipEntry current = (ZipEntry)enumerator.Current; if (current.IsFile) { if (!this.directoryFilter_.IsMatch(Path.GetDirectoryName(current.Name)) || !this.fileFilter_.IsMatch(current.Name)) { continue; } this.ExtractEntry(current); continue; } if (current.IsDirectory && (this.directoryFilter_.IsMatch(current.Name) && this.CreateEmptyDirectories)) { this.ExtractEntry(current); } } } }
public void ExtractZip(Stream inputStream, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime, bool isStreamOwner) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (overwrite == Overwrite.Prompt && confirmDelegate == null) { throw new ArgumentNullException("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; global::System.Collections.IEnumerator enumerator = zipFile_.GetEnumerator(); while (continueRunning_ && enumerator.MoveNext()) { ZipEntry zipEntry = (ZipEntry)enumerator.get_Current(); if (zipEntry.IsFile) { if (directoryFilter_.IsMatch(Path.GetDirectoryName(zipEntry.Name)) && fileFilter_.IsMatch(zipEntry.Name)) { ExtractEntry(zipEntry); } } else if (zipEntry.IsDirectory && directoryFilter_.IsMatch(zipEntry.Name) && CreateEmptyDirectories) { ExtractEntry(zipEntry); } } } }
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); } } } }
/// <summary> /// Exatract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } this.overwrite = overwrite; this.confirmDelegate = confirmDelegate; this.targetDirectory = targetDirectory; this.fileFilter = new NameFilter(fileFilter); this.directoryFilter = new NameFilter(directoryFilter); inputStream = new ZipInputStream(File.OpenRead(zipFileName)); try { if (password != null) { inputStream.Password = password; } ZipEntry entry; while ((entry = inputStream.GetNextEntry()) != null) { if (this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name)) { ExtractEntry(entry); } } } finally { inputStream.Close(); } }
public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } this.continueRunning_ = true; this.overwrite_ = overwrite; this.confirmDelegate_ = confirmDelegate; this.targetDirectory_ = targetDirectory; this.fileFilter_ = new NameFilter(fileFilter); this.directoryFilter_ = new NameFilter(directoryFilter); this.restoreDateTimeOnExtract_ = restoreDateTime; using (this.zipFile_ = new ZipFile(zipFileName)) { if (this.password_ != null) { this.zipFile_.Password = this.password_; } IEnumerator enumerator = this.zipFile_.GetEnumerator(); while (this.continueRunning_ && enumerator.MoveNext()) { ZipEntry current = (ZipEntry)enumerator.Current; if (current.IsFile) { if (this.directoryFilter_.IsMatch(Path.GetDirectoryName(current.Name)) && this.fileFilter_.IsMatch(current.Name)) { this.ExtractEntry(current); } } else if ((current.IsDirectory && this.directoryFilter_.IsMatch(current.Name)) && this.CreateEmptyDirectories) { this.ExtractEntry(current); } } } }
/// <summary> /// Extract the contents of a zip file held in a stream. /// </summary> /// <param name="inputStream">The seekable input stream containing the zip to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> /// <param name="isStreamOwner">Flag indicating whether the inputStream will be closed by this method.</param> 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("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 !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif zipFile_.IsStreamOwner = isStreamOwner; IEnumerator enumerator = zipFile_.GetEnumerator(); while (continueRunning_ && enumerator.MoveNext()) { ZipEntry entry = (ZipEntry)enumerator.Current; if (entry.IsFile) { // TODO Path.GetDirectory can fail here on invalid characters. if (directoryFilter_.IsMatch(Path.GetDirectoryName(entry.Name)) && fileFilter_.IsMatch(entry.Name)) { ExtractEntry(entry); } } else if (entry.IsDirectory) { if (directoryFilter_.IsMatch(entry.Name) && CreateEmptyDirectories) { ExtractEntry(entry); } } else { // Do nothing for volume labels etc... } } } }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { Stream inputStream; using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { inputStream = store.OpenFile(zipFileName, FileMode.Open, FileAccess.Read, FileShare.Read); } ExtractZip(inputStream, targetDirectory, overwrite, confirmDelegate, fileFilter, directoryFilter, restoreDateTime, true); }
/// <summary> /// Exatract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } this.overwrite = overwrite; this.confirmDelegate = confirmDelegate; this.targetDirectory = targetDirectory; this.fileFilter = new NameFilter(fileFilter); this.directoryFilter = new NameFilter(directoryFilter); inputStream = new ZipInputStream(File.OpenRead(zipFileName)); try { if (password != null) { inputStream.Password = password; } ZipEntry entry; while ( (entry = inputStream.GetNextEntry()) != null ) { if ( this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name) ) { ExtractEntry(entry); } } } finally { inputStream.Close(); } }
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 void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { Stream inputStream = (Stream)(object)File.Open(zipFileName, (FileMode)3, (FileAccess)1, (FileShare)1); ExtractZip(inputStream, targetDirectory, overwrite, confirmDelegate, fileFilter, directoryFilter, restoreDateTime, isStreamOwner: true); }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating wether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { if ( (overwrite == Overwrite.Prompt) && (confirmDelegate == null) ) { throw new ArgumentNullException("confirmDelegate"); } continueRunning_ = true; overwrite_ = overwrite; confirmDelegate_ = confirmDelegate; targetDirectory_ = targetDirectory; fileFilter_ = new NameFilter(fileFilter); directoryFilter_ = new NameFilter(directoryFilter); restoreDateTimeOnExtract_ = restoreDateTime; using ( inputStream_ = new ZipInputStream(File.OpenRead(zipFileName)) ) { if (password_ != null) { inputStream_.Password = password_; } ZipEntry entry; while ( continueRunning_ && (entry = inputStream_.GetNextEntry()) != null ) { if ( directoryFilter_.IsMatch(Path.GetDirectoryName(entry.Name)) && fileFilter_.IsMatch(entry.Name) ) { ExtractEntry(entry); } } } }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating wether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } continueRunning = true; this.overwrite = overwrite; this.confirmDelegate = confirmDelegate; this.targetDirectory = targetDirectory; this.fileFilter = new NameFilter(fileFilter); this.directoryFilter = new NameFilter(directoryFilter); restoreDateTimeOnExtract = restoreDateTime; using (zipFile = new ZipFile(zipFileName)) { #if !NETCF_1_0 if (password != null) { zipFile.Password = password; } #endif IEnumerator enumerator = zipFile.GetEnumerator(); while (continueRunning && enumerator.MoveNext()) { var entry = (ZipEntry) enumerator.Current; if (entry.IsFile) { if (this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name)) { if (events == null || events.OnProcessFile(entry.Name)) { ExtractEntry(entry); } } } else if (entry.IsDirectory) { if (this.directoryFilter.IsMatch(entry.Name) && CreateEmptyDirectories) { if (events == null || events.OnProcessDirectory(entry.Name, true)) { ExtractEntry(entry); } } } } } }
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("confirmDelegate"); } this.continueRunning_ = true; this.overwrite_ = overwrite; this.confirmDelegate_ = confirmDelegate; this.extractNameTransform_ = new WindowsNameTransform(targetDirectory); this.fileFilter_ = new NameFilter(fileFilter); this.directoryFilter_ = new NameFilter(directoryFilter); this.restoreDateTimeOnExtract_ = restoreDateTime; using (this.zipFile_ = new ZipFile(inputStream)) { if (this.password_ != null) { this.zipFile_.Password = this.password_; } this.zipFile_.IsStreamOwner = isStreamOwner; IEnumerator enumerator = this.zipFile_.GetEnumerator(); while (this.continueRunning_ && enumerator.MoveNext()) { ZipEntry current = (ZipEntry) enumerator.Current; if (current.IsFile) { if (this.directoryFilter_.IsMatch(Path.GetDirectoryName(current.Name)) && this.fileFilter_.IsMatch(current.Name)) { this.ExtractEntry(current); } } else if ((current.IsDirectory && this.directoryFilter_.IsMatch(current.Name)) && this.CreateEmptyDirectories) { this.ExtractEntry(current); } } } }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { Stream inputStream; using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { inputStream = store.OpenFile(zipFileName, FileMode.Open, FileAccess.Read, FileShare.Read); } ExtractZip(inputStream, targetDirectory, overwrite, confirmDelegate, fileFilter, directoryFilter, restoreDateTime, true); }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating whether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { Stream inputStream = File.Open(zipFileName, FileMode.Open, FileAccess.Read, FileShare.Read); ExtractZip(inputStream, targetDirectory, overwrite, confirmDelegate, fileFilter, directoryFilter, restoreDateTime, true); }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A filter to apply to files.</param> /// <param name="directoryFilter">A filter to apply to directories.</param> /// <param name="restoreDateTime">Flag indicating wether to restore the date and time for extracted files.</param> public void ExtractZip(string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, string fileFilter, string directoryFilter, bool restoreDateTime) { if ( (overwrite == Overwrite.Prompt) && (confirmDelegate == null) ) { throw new ArgumentNullException("confirmDelegate"); } continueRunning_ = true; overwrite_ = overwrite; confirmDelegate_ = confirmDelegate; targetDirectory_ = targetDirectory; fileFilter_ = new NameFilter(fileFilter); directoryFilter_ = new NameFilter(directoryFilter); restoreDateTimeOnExtract_ = restoreDateTime; using ( zipFile_ = new ZipFile(zipFileName) ) { #if !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif System.Collections.IEnumerator enumerator = zipFile_.GetEnumerator(); while ( continueRunning_ && enumerator.MoveNext()) { ZipEntry entry = (ZipEntry) enumerator.Current; if ( entry.IsFile ) { if ( directoryFilter_.IsMatch(Path.GetDirectoryName(entry.Name)) && fileFilter_.IsMatch(entry.Name) ) { ExtractEntry(entry); } } else if ( entry.IsDirectory ) { if ( directoryFilter_.IsMatch(entry.Name) && CreateEmptyDirectories ) { ExtractEntry(entry); } } else { // Do nothing for volume labels etc... } } } }
/// <summary> /// Extract the contents of a zip file. /// </summary> /// <param name="zipFileName">The zip file to extract from.</param> /// <param name="targetDirectory">The directory to save extracted information in.</param> /// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param> /// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> /// <param name="fileFilter">A method-filter to apply to files.</param> /// <param name="directoryFilter">A method-filter to apply to directories.</param> public void ExtractZip( string zipFileName, string targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, Func<string, bool> fileFilter, Func<string, bool> directoryFilter) { if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) { throw new ArgumentNullException("confirmDelegate"); } continueRunning_ = true; overwrite_ = overwrite; confirmDelegate_ = confirmDelegate; extractNameTransform_ = new WindowsNameTransform(targetDirectory); restoreDateTimeOnExtract_ = true; Stream inputStream = File.Open(zipFileName, FileMode.Open, FileAccess.Read, FileShare.Read); using (zipFile_ = new ZipFile(inputStream)) { #if !NETCF_1_0 if (password_ != null) { zipFile_.Password = password_; } #endif zipFile_.IsStreamOwner = true; System.Collections.IEnumerator enumerator = zipFile_.GetEnumerator(); while (continueRunning_ && enumerator.MoveNext()) { ZipEntry entry = (ZipEntry)enumerator.Current; if (entry.IsFile) { // TODO Path.GetDirectory can fail here on invalid characters. if (directoryFilter(Path.GetDirectoryName(entry.Name)) && fileFilter(entry.Name)) { ExtractEntry(entry); } } else if (entry.IsDirectory) { if (directoryFilter(entry.Name) && CreateEmptyDirectories) { ExtractEntry(entry); } } } } }