public CsvDataReader(TextReader reader, CsvLayout csvLayout, CsvBehaviour csvBehaviour, CultureInfo cultureInfo) { _parser = new CsvParser(reader, csvLayout, csvBehaviour); _header = _parser.Header; _line = null; _converter = new Converter(cultureInfo ?? CultureInfo.InvariantCulture); _enumerator = _parser.GetEnumerator(); _schema = csvLayout.Schema; }
public CsvReader(TextReader reader, int bufferSize = DefaultBufferSize, CsvLayout layout = null, CsvBehaviour behaviour = null, string defaultHeaderName = null) { if (layout == null) { layout = CsvLayout.Default; } if (behaviour == null) { behaviour = CsvBehaviour.Default; } _line = CsvLine.Empty; if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize), bufferSize, ExceptionMessage.BufferSizeTooSmall); } BufferSize = bufferSize; if (reader is StreamReader streamReader) { Stream stream = streamReader.BaseStream; if (stream.CanSeek) { // Handle bad implementations returning 0 or less if (stream.Length > 0) { BufferSize = (int)Math.Min(bufferSize, stream.Length); } } } CurrentRecordIndex = -1; _csvLayout = layout; _behaviour = behaviour; _parser = new CsvParser(reader, _csvLayout, _behaviour, defaultHeaderName); _enumerator = _parser.GetEnumerator(); }