I need to get list of all files supported by some libary (images) in specified directory and all subderictories. Root directory of drive might be chosen and in this case I want to skip system folders like "Windows" and "AppData" (some other?). For such task I can use `Directory.GetFiles()` but problem is - it will stop after getting any exception. In this case I need to just ignore noncritical exceptions and skip folders that cause this exception. This code looks resonable to me. But I want to make sure that it done right. Please tell me if it should be changed somehow. public static List<string> FindSupportedFiles(string root) { Queue<string> folders = new Queue<string>(); List<string> files = new List<string>(); folders.Enqueue(root); while (folders.Count != 0) { string currentFolder = folders.Dequeue(); if (currentFolder.Contains(":\\Windows") || (currentFolder.Contains(":\\Users") && currentFolder.Contains("\\AppData"))) { if (folders.Count != 0) currentFolder = folders.Dequeue(); continue; } string[] filesInCurrent = null; string[] foldersInCurrent = null; try { filesInCurrent = Directory.GetFiles(currentFolder, "*.*"); foldersInCurrent = Directory.GetDirectories(currentFolder); } // Ignore this exceptions catch (UnauthorizedAccessException) { } catch (PathTooLongException) { } catch (DirectoryNotFoundException) { } foreach (string f in filesInCurrent) if (SomeLib.IsSupported(f)) files.Add(f); foreach (string _current in foldersInCurrent) folders.Enqueue(_current); } return files; }