Ejemplo n.º 1
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public static MemoryStream UnzipToMemoryStream(string binfile)
 {
     var stream = new MemoryStream();
     var count = 0x100000;
     using (var stream2 = File.OpenRead(binfile))
     {
         using (ZipInputStream stream3 = new ZipInputStream(stream2))
         {
             while (stream3.GetNextEntry() != null)
             {
                 var buffer = new byte[count];
                 while (true)
                 {
                     count = stream3.Read(buffer, 0, buffer.Length);
                     if (count > 0)
                     {
                         stream.Write(buffer, 0, count);
                     }
                     else
                     {
                         break;
                     }
                 }
             }
         }
     }
     return stream;
 }