/// <summary> /// Transform a file that contains source records to an array of the destination type /// </summary> /// <param name="sourceFile">A file containing the source records.</param> /// <returns>The transformed records.</returns> public TDestination[] ReadAndTransformRecords(string sourceFile) { var engine = new FileHelperAsyncEngine <TSource>(mSourceEncoding) { ErrorMode = this.ErrorMode }; mSourceErrorManager = engine.ErrorManager; mDestinationErrorManager = new ErrorManager(ErrorMode); var res = new List <TDestination>(); engine.BeginReadFile(sourceFile); foreach (var record in engine) { res.Add(record.TransformTo()); } engine.Close(); return(res.ToArray()); }
private FileHelperAsyncEngine <T> SplitAndSortParts(string file, List <string> res) { int partNumber = 1; var lines = new List <T>(); try { long writtenBytes = 0; long lastWrittenBytes = 0; var readEngine = new FileHelperAsyncEngine <T>(Encoding); readEngine.Progress += (sender, e) => writtenBytes = e.CurrentBytes; using (readEngine.BeginReadFile(file, EngineBase.DefaultReadBufferSize * 2)) { foreach (var item in readEngine) { lines.Add(item); if ((writtenBytes - lastWrittenBytes) > BlockFileSizeInBytes) { WritePart(file, lines, partNumber, res); partNumber++; lastWrittenBytes = writtenBytes; } } } return(readEngine); } finally { if (lines.Count > 0) { WritePart(file, lines, partNumber, res); } } }