Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
     }
 }