open method

Future<void> open()

Implementation

Future<void> open() async {
  stringCharset = stringCharset ?? Charset();
  // TimeZone calTimeZone = timeZone == null ? TimeZone.UTC : timeZone;

  header = DbaseFileHeader();
  await header!.readHeaderWithCharset(afileReader!, stringCharset!);

  buffer = LByteBuffer(header!.getRecordLength());
  await fill(buffer!, afileReader!);
  buffer!.flip();

  currentOffset = header!.getHeaderLength();

  buffer!.endian = Endian.little;

  // Set up some buffers and lookups for efficiency
  fieldTypes = List.filled(header!.getNumFields(), 0);
  fieldLengths = List.filled(header!.getNumFields(), 0);
  fieldOffsets = List.filled(header!.getNumFields(), 0);
  for (var i = 0, ii = header!.getNumFields(); i < ii; i++) {
    fieldTypes![i] = header!.getFieldType(i);
    fieldLengths![i] = header!.getFieldLength(i);
    if (i > 0) {
      fieldOffsets![i] = fieldOffsets![i - 1] + header!.getFieldLength(i - 1);
    } else {
      fieldOffsets![i] = 0;
    }
  }
  bytes = null; //List(header.getRecordLength() - 1);

  // check if we working with a latin-1 char Charset
  final cname = stringCharset!.charsetEncoding;
  oneBytePerChar = 'ISO-8859-1' == cname || 'US-ASCII' == cname;

  row = Row(fieldOffsets, header, readObject);
}