static void Main(string[] args) { //Check required parameters if (CheckRequiredParameters()) { // Searches all files .dat and process them string pathIn = Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["FolderIn"]); if (Directory.Exists(pathIn)) { var dir = new DirectoryInfo(pathIn); var files = dir.GetFiles("*dat", SearchOption.AllDirectories); // Collections files data List <Consumer> consumers = new List <Consumer>(); List <Salesman> salesman = new List <Salesman>(); List <Sale> sales = new List <Sale>(); Salesman modelSalesman = new Salesman(ConfigurationManager.AppSettings["FieldSeparator"]); Consumer modelConsumer = new Consumer(ConfigurationManager.AppSettings["FieldSeparator"]); Sale modelSale = new Sale(ConfigurationManager.AppSettings["FieldSeparator"]); foreach (var file in files) { try { var fileContent = File.ReadAllText(file.FullName); var lines = fileContent.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (lines.Length > 0) { var linesSalesmans = lines.Where(x => x.Substring(0, 3) == "001"); modelSalesman.PopulateSalesman(linesSalesmans, ref salesman); var linesConsumers = lines.Where(x => x.Substring(0, 3) == "002"); modelConsumer.PopulateConsumer(linesConsumers, ref consumers); var linesSales = lines.Where(x => x.Substring(0, 3) == "003"); modelSale.PopulateSale(linesSales, ref sales); CreateFileResult(file.Name.Replace(file.Extension, ""), consumers, salesman, sales); // Move file to processed path if (!Directory.Exists(pathIn + "\\processed\\")) { Directory.CreateDirectory(pathIn + "\\processed\\"); } file.MoveTo(pathIn + "\\processed\\" + file.Name); } } catch (Exception error) { // Move file to error path if (!Directory.Exists(pathIn + "\\error\\")) { Directory.CreateDirectory(pathIn + "\\error\\"); } file.MoveTo(pathIn + "\\error\\" + file.Name); ErrorWrite(); } } } } else { ErrorWrite(); } }