internal bool LoadLocalHeaderExtraFieldAndCompressedBytesIfNeeded() { if (this._originallyInArchive) { this._archive.ArchiveStream.Seek(this._offsetOfLocalHeader, SeekOrigin.Begin); this._lhUnknownExtraFields = ZipLocalFileHeader.GetExtraFields(this._archive.ArchiveReader); } if (!this._everOpenedForWrite && this._originallyInArchive) { this._compressedBytes = new byte[this._compressedSize]; this._archive.ArchiveStream.Seek(this.OffsetOfCompressedData, SeekOrigin.Begin); ZipHelper.ReadBytes(this._archive.ArchiveStream, this._compressedBytes, (int)this._compressedSize); } return(true); }
private static bool SeekBackwardsAndRead(Stream stream, byte[] buffer, out int bufferPointer) { if (stream.Position >= (long)buffer.Length) { stream.Seek((long)-buffer.Length, SeekOrigin.Current); ZipHelper.ReadBytes(stream, buffer, buffer.Length); stream.Seek((long)-buffer.Length, SeekOrigin.Current); bufferPointer = buffer.Length - 1; return(false); } else { int bytesToRead = (int)stream.Position; stream.Seek(0L, SeekOrigin.Begin); ZipHelper.ReadBytes(stream, buffer, bytesToRead); stream.Seek(0L, SeekOrigin.Begin); bufferPointer = bytesToRead - 1; return(true); } }