46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
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<string> 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<Worker> 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;
|
|
}
|
|
|
|
} |