mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-10-03 04:08:44 +00:00
50 lines
1.2 KiB
C#
50 lines
1.2 KiB
C#
using System.IO;
|
|
using SharpCompress.Common.Zip.Headers;
|
|
|
|
namespace SharpCompress.Common.Zip;
|
|
|
|
internal class FileInfoZipFilePart : FilePart
|
|
{
|
|
internal FileInfoZipFilePart(
|
|
DirectoryEntryHeader header,
|
|
FileInfo file
|
|
)
|
|
: base(header.ArchiveEncoding)
|
|
{
|
|
}
|
|
|
|
}
|
|
|
|
internal class SeekableZipFilePart : ZipFilePart
|
|
{
|
|
private bool _isLocalHeaderLoaded;
|
|
private readonly SeekableZipHeaderFactory _headerFactory;
|
|
|
|
internal SeekableZipFilePart(
|
|
SeekableZipHeaderFactory headerFactory,
|
|
DirectoryEntryHeader header,
|
|
Stream stream
|
|
)
|
|
: base(header, stream) => _headerFactory = headerFactory;
|
|
|
|
internal override Stream GetCompressedStream()
|
|
{
|
|
if (!_isLocalHeaderLoaded)
|
|
{
|
|
LoadLocalHeader();
|
|
_isLocalHeaderLoaded = true;
|
|
}
|
|
return base.GetCompressedStream();
|
|
}
|
|
|
|
private void LoadLocalHeader() =>
|
|
Header = _headerFactory.GetLocalHeader(BaseStream, (DirectoryEntryHeader)Header);
|
|
|
|
protected override Stream CreateBaseStream()
|
|
{
|
|
BaseStream.Position = Header.DataStartPosition.NotNull();
|
|
|
|
return BaseStream;
|
|
}
|
|
}
|