/// <summary> /// Initialize the current CsvReader instance with provided information /// </summary> /// <param name="stream">A readable stream from which current reader will read data</param> /// <param name="settings">Configurable options customizing current CsvReader instance</param> /// <param name="dataResolver">A customer data resolver converting raw CSV values to objects</param> protected CsvReader(Stream stream, CsvReaderSettings settings, IDataResolver <T> dataResolver) { this.mDataResolver = dataResolver; this.mCsvSettings = settings = settings ?? new CsvReaderSettings(); this.mCsvSettings.UseCache = settings.UseCache || settings.SkipDuplicates; EnsureParameters(stream, settings, dataResolver); settings.BufferSize = Math.Min(BUFFER_SZMAX, Math.Max(settings.BufferSize, BUFFER_SZMIN)); this.mReader = new StreamReader(stream, settings.Encoding, false, settings.BufferSize); this.mBuffer = new Char[settings.BufferSize]; }
private static void EnsureParameters(Stream stream, CsvReaderSettings settings, IDataResolver <T> dataResolver) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanRead) { throw new ArgumentException("stream is not readable", "stream"); } if (settings.Encoding == null) { throw new ArgumentNullException("settings.Encoding"); } if (dataResolver == null) { throw new ArgumentNullException("dataResolver"); } }
/// <summary> /// Create an instance of CsvReader with a specified readable stream, a CsvReaderSettings object and a custom data resolver. /// </summary> /// <param name="stream">A readable stream from which the CsvReader will read content.</param> /// <param name="settings">Specify the options to control behavior of CsvReader.</param> /// <param name="dataResolver">A custom data resolver used to serialize and deserialize data.</param> /// <returns>A CsvReader instance.</returns> public static CsvReader <T> Create(Stream stream, CsvReaderSettings settings, IDataResolver <T> dataResolver) { return(new CsvReader <T>(stream, settings, dataResolver)); }
/// <summary> /// Create an instance of CsvReader with a specified byte array, a CsvReaderSettings object and a custom data resolver. /// </summary> /// <param name="stream">A Byte array from which the CsvReader will read content.</param> /// <param name="settings">Specify the options to control behavior of CsvReader.</param> /// <param name="dataResolver">A custom data resolver used to serialize and deserialize data.</param> /// <returns>A CsvReader instance.</returns> public static CsvReader <T> Create(Byte[] stream, CsvReaderSettings settings, IDataResolver <T> dataResolver) { return(Create(new MemoryStream(stream), settings, dataResolver)); }
/// <summary> /// Create an instance of CsvReader with a specified file path, a CsvReaderSettings object and a custom data resolver. /// If the path does not exists, an exception will be thrown. /// </summary> /// <param name="filePath">The path of the CSV file to be read.</param> /// <param name="settings">Specify the options to control behavior of CsvReader.</param> /// <param name="dataResolver">A custom data resolver used to serialize and deserialize data.</param> /// <returns>A CsvReader instance.</returns> public static CsvReader <T> Create(String filePath, CsvReaderSettings settings, IDataResolver <T> dataResolver) { CheckFilePath(filePath); return(new CsvReader <T>(filePath, settings, dataResolver)); }
/// <summary> /// Initialize the current CsvReader instance with provided information /// </summary> /// <param name="filePath">A readable file from which current reader will read data</param> /// <param name="settings">Configurable options customizing current CsvReader instance</param> /// <param name="dataResolver">A customer data resolver converting raw CSV values to objects</param> protected CsvReader(String filePath, CsvReaderSettings settings, IDataResolver <T> dataResolver) : this(File.OpenRead(filePath), settings, dataResolver) { this.mFilePath = filePath; }