System.IO.Compression.ZipLocalFileHeader.GetExtraFields C# (CSharp) Метод

GetExtraFields() статический публичный Метод

static public GetExtraFields ( BinaryReader reader ) : List
reader BinaryReader
Результат List
        static public List<ZipGenericExtraField> GetExtraFields(BinaryReader reader)
        {
            //assumes that TrySkipBlock has already been called, so we don't have to validate twice

            List<ZipGenericExtraField> result;

            const int OffsetToFilenameLength = 26; //from the point before the signature

            reader.BaseStream.Seek(OffsetToFilenameLength, SeekOrigin.Current);

            ushort filenameLength = reader.ReadUInt16();
            ushort extraFieldLength = reader.ReadUInt16();

            reader.BaseStream.Seek(filenameLength, SeekOrigin.Current);


            using (Stream str = new SubReadStream(reader.BaseStream, reader.BaseStream.Position, extraFieldLength))
            {
                result = ZipGenericExtraField.ParseExtraField(str);
            }
            Zip64ExtraField.RemoveZip64Blocks(result);

            return result;
        }

Usage Example

Пример #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[checked ((IntPtr)this._compressedSize)];
         this._archive.ArchiveStream.Seek(this.OffsetOfCompressedData, SeekOrigin.Begin);
         ZipHelper.ReadBytes(this._archive.ArchiveStream, this._compressedBytes, (int)this._compressedSize);
     }
     return(true);
 }
All Usage Examples Of System.IO.Compression.ZipLocalFileHeader::GetExtraFields