private void LoadIgnoredDirectories() { if (File.Exists(IgnoreDirectoryFile)) { Logger.Info("Loading ignore directories..."); Data.Ignore.Directories ignoreDirectories = null; XmlSerializer serializer = new XmlSerializer(typeof(Data.Ignore.Directories)); using (StreamReader reader = new StreamReader(IgnoreDirectoryFile)) { ignoreDirectories = (Data.Ignore.Directories)serializer.Deserialize(reader); } if (ignoreDirectories.Items != null) { foreach (var dir in ignoreDirectories.Items) { DirectoryInfo directoryInfo = new DirectoryInfo(dir.Value); if (directoryInfo.Exists) { IgnoreDirectories.Add(directoryInfo.FullName); } } } } }
private void ScanDirectory(string directory, string[] fileExtensions, bool includeSubdirectories) { if (IgnoreDirectories.Contains(directory)) { if (Globals.VerboseLogging) { Logger.Info($"Skipping directory '{directory}' as set in ignore file."); } return; } if (includeSubdirectories) { foreach (var subDirectory in Directory.GetDirectories(directory)) { ScanDirectory(subDirectory, fileExtensions, includeSubdirectories); } } if (Globals.VerboseLogging) { Logger.Info($"Scanning directory '{directory}'."); } DirectoryInfo directoryInfo = new DirectoryInfo(directory); if (directoryInfo.EnumerateFiles("*.mp3", SearchOption.TopDirectoryOnly).Any()) { ScanActions.Add(() => ProcessDirectory(directoryInfo)); foreach (string extension in fileExtensions) { foreach (var file in directoryInfo.GetFiles("*." + extension.ToLower())) { ScanActions.Add(() => ProcessFile(file)); } } } }