コード例 #1
0
        public TranslatedChanges Translate(ZipArchiveEntry entry, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            using (var stream = entry.Open())
                using (var reader = new BinaryReader(stream, _encoding))
                {
                    var header     = DbaseFileHeader.Read(reader);
                    var enumerator = header.CreateDbaseRecordEnumerator <TRecord>(reader);
                    return(_translator.Translate(entry, enumerator, changes));
                }
        }
コード例 #2
0
        public ZipArchiveProblems Validate(ZipArchiveEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            var problems = ZipArchiveProblems.None;

            using (var stream = entry.Open())
                using (var reader = new BinaryReader(stream, _encoding))
                {
                    DbaseFileHeader header = null;
                    try
                    {
                        header = DbaseFileHeader.Read(reader);
                    }
                    catch (Exception exception)
                    {
                        problems += entry.HasDbaseHeaderFormatError(exception);
                    }

                    if (header != null)
                    {
                        if (!header.Schema.Equals(_schema))
                        {
                            problems += entry.HasDbaseSchemaMismatch(_schema, header.Schema);
                        }
                        else
                        {
                            using (var records = header.CreateDbaseRecordEnumerator <TDbaseRecord>(reader))
                            {
                                problems += _recordValidator.Validate(entry, records);
                            }
                        }
                    }
                }

            return(problems);
        }