У меня точно такаяже проблема была в свое время, тоже не понимал до конца, в итоге понятие полностью пришло когда сделал простенький метод рекурсивного рыскания по файлам.
Пример алгоритма:
функция_поиска( url ){
если (url.файл()) тогда *делаем нужное к примеру смотрим расширение или имя*
иначе цикл_перебора_содержимого_каталога вызов функция_поиска( url )
Лично я въехал с таких задач в рекурсию.
Еще и сразу, за static методы бьют по рукам а бывает и по голове. Лучше сразу учитесь их избегать и использовать только для финализированных констант.