using static System.Console;
using System.IO;
using System.Collections.Generic;
public class Program {
public static void Main() {
foreach (var file in FileUtil.GetFiles("c:\\", "aria2c.exe")) WriteLine(file);
}
}
public static class FileUtil {
public static IEnumerable<string> GetFiles(string root, string searchPattern) {
var pending = new Stack<string>();
pending.Push(root);
while (pending.Count != 0) {
var path = pending.Pop();
string[] next = null;
try {
next = Directory.GetFiles(path, searchPattern);
}
catch { } //aqui você pode colocar log, aviso ou fazer algo útil se tiver problemas
if (next != null && next.Length != 0) foreach (var file in next) yield return file;
try {
next = Directory.GetDirectories(path);
foreach (var subdir in next) pending.Push(subdir);
}
catch { } //aqui você pode colocar log, aviso ou fazer algo útil se tiver problemas
}
}
}
//https://pt.stackoverflow.com/q/75167/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoJCQkJCQpwdWJsaWMgY2xhc3MgUHJvZ3JhbSB7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIHsKCSAgICBmb3JlYWNoICh2YXIgZmlsZSBpbiBGaWxlVXRpbC5HZXRGaWxlcygiYzpcXCIsICJhcmlhMmMuZXhlIikpIFdyaXRlTGluZShmaWxlKTsKCX0KfQoKcHVibGljIHN0YXRpYyBjbGFzcyBGaWxlVXRpbCB7CiAgICBwdWJsaWMgc3RhdGljIElFbnVtZXJhYmxlPHN0cmluZz4gR2V0RmlsZXMoc3RyaW5nIHJvb3QsIHN0cmluZyBzZWFyY2hQYXR0ZXJuKSB7CiAgICAgICAgdmFyIHBlbmRpbmcgPSBuZXcgU3RhY2s8c3RyaW5nPigpOwogICAgICAgIHBlbmRpbmcuUHVzaChyb290KTsKICAgICAgICB3aGlsZSAocGVuZGluZy5Db3VudCAhPSAwKSB7CiAgICAgICAgICAgIHZhciBwYXRoID0gcGVuZGluZy5Qb3AoKTsKICAgICAgICAgICAgc3RyaW5nW10gbmV4dCA9IG51bGw7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBuZXh0ID0gRGlyZWN0b3J5LkdldEZpbGVzKHBhdGgsIHNlYXJjaFBhdHRlcm4pOyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggeyB9IC8vYXF1aSB2b2PDqiBwb2RlIGNvbG9jYXIgbG9nLCBhdmlzbyBvdSBmYXplciBhbGdvIMO6dGlsIHNlIHRpdmVyIHByb2JsZW1hcwogICAgICAgICAgICBpZiAobmV4dCAhPSBudWxsICYmIG5leHQuTGVuZ3RoICE9IDApIGZvcmVhY2ggKHZhciBmaWxlIGluIG5leHQpIHlpZWxkIHJldHVybiBmaWxlOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbmV4dCA9IERpcmVjdG9yeS5HZXREaXJlY3RvcmllcyhwYXRoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzdWJkaXIgaW4gbmV4dCkgcGVuZGluZy5QdXNoKHN1YmRpcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggeyB9IC8vYXF1aSB2b2PDqiBwb2RlIGNvbG9jYXIgbG9nLCBhdmlzbyBvdSBmYXplciBhbGdvIMO6dGlsIHNlIHRpdmVyIHByb2JsZW1hcwogICAgICAgIH0KICAgIH0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvNzUxNjcvMTAx