Вот решение, аналогичное Rex Kerr, но с фильтром файлов:
import java.io.File
def findFiles(fileFilter: (File) => Boolean = (f) => true)(f: File): List[File] = {
val ss = f.list()
val list = if (ss == null) {
Nil
} else {
ss.toList.sorted
}
val visible = list.filter(_.charAt(0) != '.')
val these = visible.map(new File(f, _))
these.filter(fileFilter) ++ these.filter(_.isDirectory).flatMap(findFiles(fileFilter))
}
Метод возвращает List [File], что несколько удобнее, чем Array [File]. Также игнорируются все скрытые каталоги (т. Е. Начинающиеся с '.').
Он частично применяется с использованием фильтра файлов по вашему выбору, например:
val srcDir = new File( ... )
val htmlFiles = findFiles( _.getName endsWith ".html" )( srcDir )