コード例 #1
0
        public static Zip64ExtraField GetAndRemoveZip64Block(List <ZipGenericExtraField> extraFields, bool readUncompressedSize, bool readCompressedSize, bool readLocalHeaderOffset, bool readStartDiskNumber)
        {
            Zip64ExtraField zip64Block = new Zip64ExtraField();

            zip64Block._compressedSize    = new long?();
            zip64Block._uncompressedSize  = new long?();
            zip64Block._localHeaderOffset = new long?();
            zip64Block._startDiskNumber   = new int?();
            List <ZipGenericExtraField> list = new List <ZipGenericExtraField>();
            bool flag = false;

            foreach (ZipGenericExtraField extraField in extraFields)
            {
                if ((int)extraField.Tag == 1)
                {
                    list.Add(extraField);
                    if (!flag && Zip64ExtraField.TryGetZip64BlockFromGenericExtraField(extraField, readUncompressedSize, readCompressedSize, readLocalHeaderOffset, readStartDiskNumber, out zip64Block))
                    {
                        flag = true;
                    }
                }
            }

            foreach (ZipGenericExtraField genericExtraField in list)
            {
                extraFields.Remove(genericExtraField);
            }

            return(zip64Block);
        }
コード例 #2
0
        public static Zip64ExtraField GetJustZip64Block(Stream extraFieldStream, bool readUncompressedSize, bool readCompressedSize, bool readLocalHeaderOffset, bool readStartDiskNumber)
        {
            using (BinaryReader reader = new BinaryReader(extraFieldStream))
            {
                ZipGenericExtraField field;

                while (ZipGenericExtraField.TryReadBlock(reader, extraFieldStream.Length, out field))
                {
                    Zip64ExtraField zip64Block;

                    if (Zip64ExtraField.TryGetZip64BlockFromGenericExtraField(field, readUncompressedSize, readCompressedSize, readLocalHeaderOffset, readStartDiskNumber, out zip64Block))
                    {
                        return(zip64Block);
                    }
                }
            }

            return(new Zip64ExtraField()
            {
                _compressedSize = new long?(),
                _uncompressedSize = new long?(),
                _localHeaderOffset = new long?(),
                _startDiskNumber = new int?()
            });
        }