void Initialize() { Files = new List <ZipDirectoryEntry>(); var reader = new BinaryReader(source); while (source.Position < source.Length) { int id = reader.ReadInt32(); switch (id) { case 0x4034B50: var file = new ZipDirectoryEntry(source); Files.Add(file); if (file.CompressedSize >= 0 && file.UncompressedSize >= 0) { source.Position += file.CompressedSize; if (file.DataDescriptorFollows) { reader.ReadBytes(12); } } break; default: return; } } }
public Stream StreamFile(ZipDirectoryEntry zde) { var reader = new BinaryReader(source); switch (zde.Compression) { case ZipCompressionMethod.Stored: source.Position = zde.Offset; return(source); break; case ZipCompressionMethod.Deflated: source.Position = zde.Offset; return(new DeflateStream(source, CompressionMode.Decompress)); break; default: source.Position = zde.Offset; return(source); break; } }