/// <summary> /// </summary> protected void ReadHeader() { _header = new DbaseFileHeader(); // read the header _header.ReadHeader(_dbfReader, _parent._encodingProvider); // how many records remain _readPosition = _header.HeaderLength; }
/// <summary> /// Method to write <paramref name="header"/> to the dbase stream /// </summary> /// <param name="header">The header to write</param> public void Write(DbaseFileHeader header) { //if (header == null) // throw new ArgumentNullException("header"); ////if (_recordsWritten) //// throw new InvalidOperationException("Records have already been written. Header file needs to be written first."); //_headerWritten = true; //if (header.Encoding.WindowsCodePage != _encoding.WindowsCodePage) //{ // header.Encoding = _encoding; //} //header.WriteHeader(_writer); //_header = header; if (header == null) { throw new ArgumentNullException("header"); } //if (_recordsWritten) // throw new InvalidOperationException("Records have already been written. Header file needs to be written first."); _headerWritten = true; // Set the encoding if not already done. if (header.Encoding == null) { header.Encoding = _encoding; } //if (header.Encoding.WindowsCodePage != _encoding.WindowsCodePage) //{ // header.Encoding = _encoding; //} // Get the current position var currentPosition = (int)_writer.BaseStream.Position; //Header should always be written first in the file if (_writer.BaseStream.Position != 0) { _writer.Seek(0, SeekOrigin.Begin); } // actually write the header header.WriteHeader(_writer); // reposition the stream if (currentPosition != 0) { _writer.Seek(currentPosition, SeekOrigin.Begin); } _header = header; }
/// <summary> /// Gets the header information for the dbase file. /// </summary> /// <returns>DbaseFileHeader contain header and field information.</returns> public DbaseFileHeader GetHeader() { if (_header == null) { using (var dbfReader = new BinaryReader(_streamProvider.OpenRead())) { // read the header _header = new DbaseFileHeader(); _header.ReadHeader(dbfReader, _encodingProvider); } } return(_header); }
/// <summary> /// Initializes a new instance of the DbaseFileWriter class using the provided <paramref name="streamProviderRegistry"/> and the default encoding /// </summary> /// <param name="streamProviderRegistry">The stream provider registry</param> public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry) : this(streamProviderRegistry, DbaseFileHeader.GetEncoding(streamProviderRegistry[StreamTypes.DataEncoding])) { }