TryReadBlock() static public méthode

static public TryReadBlock ( BinaryReader reader, bool saveExtraFieldsAndComments, ZipCentralDirectoryFileHeader &header ) : bool
reader BinaryReader
saveExtraFieldsAndComments bool
header ZipCentralDirectoryFileHeader
Résultat bool
Exemple #1
0
        private void ReadCentralDirectory()
        {
            try
            {
                //assume ReadEndOfCentralDirectory has been called and has populated _centralDirectoryStart

                _archiveStream.Seek(_centralDirectoryStart, SeekOrigin.Begin);

                long numberOfEntries = 0;

                //read the central directory
                ZipCentralDirectoryFileHeader currentHeader;
                bool saveExtraFieldsAndComments = Mode == ZipArchiveMode.Update;
                while (ZipCentralDirectoryFileHeader.TryReadBlock(_archiveReader,
                                                                  saveExtraFieldsAndComments, out currentHeader))
                {
                    AddEntry(new ZipArchiveEntry(this, currentHeader));
                    numberOfEntries++;
                }

                if (numberOfEntries != _expectedNumberOfEntries)
                {
                    throw new InvalidDataException(SR.NumEntriesWrong);
                }
            }
            catch (EndOfStreamException ex)
            {
                throw new InvalidDataException(SR.Format(SR.CentralDirectoryInvalid, ex));
            }
        }
Exemple #2
0
        private void ReadCentralDirectory()
        {
            ZipCentralDirectoryFileHeader zipCentralDirectoryFileHeader;

            try
            {
                this._archiveStream.Seek(this._centralDirectoryStart, SeekOrigin.Begin);
                long num  = (long)0;
                bool mode = this.Mode == ZipArchiveMode.Update;
                while (ZipCentralDirectoryFileHeader.TryReadBlock(this._archiveReader, mode, out zipCentralDirectoryFileHeader))
                {
                    this.AddEntry(new ZipArchiveEntry(this, zipCentralDirectoryFileHeader));
                    num += (long)1;
                }
                if (num != this._expectedNumberOfEntries)
                {
                    throw new InvalidDataException(Messages.NumEntriesWrong);
                }
            }
            catch (EndOfStreamException endOfStreamException)
            {
                throw new InvalidDataException(Messages.CentralDirectoryInvalid, endOfStreamException);
            }
        }