using File_Watcher.Models; using System.Text.RegularExpressions; namespace File_Watcher.Helpers; internal static partial class HelperStratus { // Batch FINAL QA_28_00_12 finished at 10/28/23 00:14. Elapsed time 00:01:34. // Cassette 1T614291 finished. // Mean 9.091, STDD 0.0091 private static void TryMoveFile(AppSettings appSettings, string checkFile) { string line; List collection = []; char start = appSettings.StratusConfiguration.FileDelimiterPattern[0]; string[] lines = !File.Exists(checkFile) ? [] : File.ReadAllLines(checkFile); for (int i = 0; i < lines.Length; i++) { line = lines[i]; collection.Add(line); if (line.Length < 1 || line[0] != start) continue; if (!Regex.Match(line, appSettings.StratusConfiguration.FileDelimiterPattern).Success) continue; File.WriteAllLines(Path.Combine(appSettings.WatchDirectory, $"{DateTime.Now.Ticks}.txt"), collection); collection.Clear(); for (int j = i + 1; j < lines.Length; j++) collection.Add(lines[j]); File.WriteAllLines(checkFile, collection); collection.Clear(); break; } } internal static bool MoveFile(AppSettings appSettings, ILogger logger) { string file = Path.Combine(appSettings.WatchDirectory, appSettings.StratusConfiguration.WatchFile); try { TryMoveFile(appSettings, file); } catch (Exception ex) { logger.LogError(ex, "Inner loop error!"); } return true; } }