2 using SharpCompress.Common.Zip.Headers;
4 namespace SharpCompress.Common.Zip
6 internal class SeekableZipFilePart : ZipFilePart
8 private bool isLocalHeaderLoaded;
9 private readonly SeekableZipHeaderFactory headerFactory;
11 internal SeekableZipFilePart(SeekableZipHeaderFactory headerFactory, DirectoryEntryHeader header, Stream stream)
12 : base(header, stream)
14 this.headerFactory = headerFactory;
17 internal override Stream GetCompressedStream()
19 if (!isLocalHeaderLoaded)
22 isLocalHeaderLoaded = true;
24 return base.GetCompressedStream();
27 internal string Comment
29 get { return (Header as DirectoryEntryHeader).Comment; }
32 private void LoadLocalHeader()
34 bool hasData = Header.HasData;
35 Header = headerFactory.GetLocalHeader(BaseStream, Header as DirectoryEntryHeader);
36 Header.HasData = hasData;
39 protected override Stream CreateBaseStream()
41 BaseStream.Position = Header.DataStartPosition.Value;