3 using System.IO.Compression;
4 using SharpCompress.Common.Zip.Headers;
5 using SharpCompress.IO;
7 namespace SharpCompress.Common.Zip
9 internal class StreamingZipFilePart : ZipFilePart
11 private Stream decompressionStream;
13 internal StreamingZipFilePart(ZipFileEntry header, Stream stream)
14 : base(header, stream)
18 protected override Stream CreateBaseStream()
20 return Header.PackedStream;
23 internal override Stream GetCompressedStream()
29 decompressionStream = CreateDecompressionStream(GetCryptoStream(CreateBaseStream()));
32 return new NonDisposingStream(decompressionStream);
34 return decompressionStream;
37 internal BinaryReader FixStreamedFileLocation(ref RewindableStream rewindableStream)
39 if (Header.IsDirectory)
41 return new BinaryReader(rewindableStream);
45 if (decompressionStream == null)
47 decompressionStream = GetCompressedStream();
49 decompressionStream.SkipAll();
51 DeflateStream deflateStream = decompressionStream as DeflateStream;
52 if (deflateStream != null)
54 rewindableStream.Rewind(deflateStream.BaseStream as MemoryStream);
57 var reader = new BinaryReader(rewindableStream);
58 decompressionStream = null;