Боюсь, что приведенные ответы кажутся единственными, я ненавижу специальные папки, потому что это должна быть очень простая функция -
void CollectFiles(string strDir, string pattern) {
DirectoryInfo di = new DirectoryInfo(strDir);
foreach(FileInfo fi in di.GetFiles(pattern) {
//store file data
}
foreach(DirectoryInfo diInfo in di.GetDirectories()) {
CollectFiles(diInfo);
}
}
Становится безобразным, потому что вы должны включить
Check If This Is A Special Folder And Deal With It And Its Child Folders Differently ();
Достаточно справедливо для Microsoft, чтобы иметь папку, которая может существовать где угодно, на удаленном ПК, на сервере и т. Д. Но на самом деле, что не так с UNIX / Linux, используйте ссылки на папку, и если физическая папка назначения должна переместить, изменить ссылку. Затем вы можете преобразовать их в красивую аккуратную функцию, рассматривая их как обычные папки.