Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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;
            }
        }