Files
sharpcompress/SharpCompress/Common/Zip/SeekableZipFilePart.cs
Adam Hathcock 7ce4b7d076 Initial commit
2013-04-07 10:58:58 +01:00

49 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 GetStream()
{
if (!isLocalHeaderLoaded)
{
LoadLocalHeader();
isLocalHeaderLoaded = true;
}
return base.GetStream();
}
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;
}
}
}