private static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; try { var culture = new CultureInfo(ConfigurationManager.AppSettings["Culture"]); CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; } catch { // Ignored } var config = WatchManagerConfig.GetConfiguration(); var logger = new ConsoleLogger(); IWatchManager watchManager = new WatchManager(config, logger); watchManager.EnableWatching(); while (true) { Console.ReadKey(); } }
public WatchManager(WatchManagerConfig config, ILogger logger) { if (config == null) { throw new ArgumentNullException(nameof(config)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } _logger = logger; _watchers = config.Watchers .Where(w => new DirectoryInfo(w.Path).Exists) .Select(w => new FileSystemWatcher(w.Path)) .ToArray(); _rules = config.Rules.ToDictionary( r => new Regex(r.Filter), r => string.IsNullOrEmpty(r.DestPath) ? config.Rules.DefaultDestPath : r.DestPath); _copyOptions = config.CopyOptions; _dateTimeFormat = config.DateTimeFormat; foreach (var watcher in _watchers) { watcher.Created += FileDetected; } }