a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
using System.IO;
|
|
using SharpCompress.Common.Zip.Headers;
|
|
|
|
namespace SharpCompress.Common.Zip
|
|
{
|
|
internal class SeekableZipFilePart : ZipFilePart
|
|
{
|
|
private bool isLocalHeaderLoaded;
|
|
private readonly SeekableZipHeaderFactory headerFactory;
|
|
|
|
internal SeekableZipFilePart(SeekableZipHeaderFactory headerFactory, DirectoryEntryHeader header, Stream stream)
|
|
: base(header, stream)
|
|
{
|
|
this.headerFactory = headerFactory;
|
|
}
|
|
|
|
internal override Stream GetCompressedStream()
|
|
{
|
|
if (!isLocalHeaderLoaded)
|
|
{
|
|
LoadLocalHeader();
|
|
isLocalHeaderLoaded = true;
|
|
}
|
|
return base.GetCompressedStream();
|
|
}
|
|
|
|
internal string Comment
|
|
{
|
|
get { return (Header as DirectoryEntryHeader).Comment; }
|
|
}
|
|
|
|
private void LoadLocalHeader()
|
|
{
|
|
bool hasData = Header.HasData;
|
|
Header = headerFactory.GetLocalHeader(BaseStream, Header as DirectoryEntryHeader);
|
|
Header.HasData = hasData;
|
|
}
|
|
|
|
protected override Stream CreateBaseStream()
|
|
{
|
|
BaseStream.Position = Header.DataStartPosition.Value;
|
|
return BaseStream;
|
|
}
|
|
}
|
|
} |