private void FindFiles(string path, uint maxBytes, bool showErrors, ProcessFileCallback processFile) { // Modified largely from https://developerslogblog.wordpress.com/2020/02/25/c-how-to-find-all-files-recursively-in-a-folder/ var paths = new List <string>(); var directoriesQueue = new Queue(); directoriesQueue.Enqueue(path); while (directoriesQueue.Count > 0) { var currentPath = (string)directoriesQueue.Dequeue(); try { //Console.WriteLine("Processing folder " + currentPath); var directories = Directory.GetDirectories(currentPath); foreach (var directory in directories) { directoriesQueue.Enqueue(directory); } foreach (var file in Directory.GetFiles(currentPath)) { processFile(file, showErrors); } } catch (Exception e) { if (showErrors) { Console.WriteLine($"ERROR: {e}"); } } } }
public DirectoryWalker(ProcessDirCallback dirCallback, ProcessFileCallback fileCallback) { this.dirCallback = dirCallback; this.fileCallback = fileCallback; }