public static void View(string zipFileName) { ZipReader reader = new ZipReader(zipFileName); Console.WriteLine("Archive: {0} ({1} files)", zipFileName, reader.Entries.Count); Console.WriteLine(reader.Comment); string format = "{0,8} {1,8} {2,5} {3,10} {4,5} {5}"; Console.WriteLine(format, " Length ", " Size ", "Ratio", " Date ", "Time ", "Name"); Console.WriteLine(format, "--------", "--------", "-----", "----------", "-----", "----"); foreach (ZipEntry entry in reader.Entries) { if (!entry.IsDirectory) { Console.WriteLine(format, entry.Length, entry.CompressedLength, entry.Ratio.ToString("P0"), entry.ModifiedTime.ToString("yyyy-MM-dd"), entry.ModifiedTime.ToString("hh:mm"), entry.Name); } } reader.Close(); }
public static void Extract(string zipFileName) { ZipReader reader = new ZipReader(zipFileName); Console.WriteLine("Archive: {0}", zipFileName); Console.WriteLine(reader.Comment); // buffer to hold temp bytes byte[] buffer = new byte[4096]; int byteCount; // Get the zipped entries while (reader.MoveNext()) { ZipEntry entry = reader.Current; if (entry.IsDirectory) { Directory.CreateDirectory(entry.Name); } else { Console.Write(" {0}", entry.Name); // create output stream FileStream writer = File.Open(entry.Name, FileMode.Create); // write uncompressed data while ((byteCount = reader.Read(buffer, 0, buffer.Length)) > 0) { Console.Write("."); writer.Write(buffer, 0, byteCount); } writer.Close(); Console.WriteLine(); } } reader.Close(); }
protected int UnZip(string ZipFileName, bool CreateDir) { ZipReader reader = null; int i = 0; //'Figure out new directory name for the uncompressed files string NewPath = ""; NewPath = ZipFileName.Replace(Path.GetExtension(ZipFileName), ""); //'Make a directory with the name of the zip file. Overwritten if exists. if (CreateDir == true) { Directory.CreateDirectory(NewPath); } else { NewPath = Path.GetDirectoryName(NewPath); } try { //'Open a zip file reader = new ZipReader(ZipFileName); //'Process all files inside the archive while (reader.MoveNext()) { i += 1; //'Create a Zip object ZipEntry entry = reader.Current; if (!entry.IsDirectory) { //'It's a file string FileName = entry.Name.Replace("/", "\\"); //'If entry is Directory, create it if (FileName.IndexOf("\\") > 0) { //'If Directory exists, it is not overwritten try { Directory.CreateDirectory(NewPath + "\\" + Path.GetDirectoryName(FileName)); } catch (UnauthorizedAccessException ex) { ShowInfo((string)this.GetGlobalResourceObject("Lang","LOC_ERROR_CREATE_DIRECTORY_ACCESSDENIED"), MessageType.ErrorMsg); return 0; } catch (Exception ex) { ShowInfo((string)this.GetGlobalResourceObject("Lang","LOC_ERROR_CREATE_DIRECTORY") + " " + ex.Message, MessageType.ErrorMsg); return 0; } } //'Uncompress the file if its type is not forbidden //'for upload if (IsAllowedFileType(Path.GetExtension(FileName))) { FileStream Writer = null; try { Writer = File.Open(NewPath + "\\" + FileName, FileMode.Create); Byte[] buffer = new Byte[4096]; int byteCount = 0; //'Read file from the archive and write it to the disk byteCount = reader.Read(buffer, 0, buffer.Length); while (byteCount > 0) { Writer.Write(buffer, 0, byteCount); byteCount = reader.Read(buffer, 0, buffer.Length); } } finally { //'Close the file Writer.Close(); } } } } } catch (UnauthorizedAccessException ex) { ShowInfo((string)this.GetGlobalResourceObject("Lang","LOC_ERROR_ZIP_CANNOTEXTRACT_ACCESSDENIED"), MessageType.ErrorMsg); return i; } catch (Exception ex) { ShowInfo((string)this.GetGlobalResourceObject("Lang","LOC_ERROR_COPY_CANNOTEXTRACT") + " " + ex.Message, MessageType.ErrorMsg); return i; } finally { //'Close the Zip file reader.Close(); } //'Return the number of files produced return i; }