Используйте "Алгоритм поимки льва в пустыне": поделить пустыню на 2 части. Ту часть, где его не окажется, поделить снова на 2 части. И так до поимки.
Попробуйте порциями выводить файлы, с 1 по 10 полосу и т. д. При зависании в той или иной порции уже выводите 1-5, затем 1-3 и т. д.
ИМХО всё...