Sì, qualcosa ti è sfuggito. Innanzitutto il tuo codice compila solo su Java 8 (i controlli sull'uso di variabili locali da parte di anonymous inner class è stato "rilassato"). Su Java 7 non compila perché recursive e listImages non sono final.
Se il tuo codice deve funzionare solo da Java 8 in poi, ok. Altrimenti devi correggere.
Questo comunque è il problema minore. Il problema maggiore è la comprensione di cosa succede con walkFileTree. Se recursive è true scansioni in "profondità". Ma se recursive è false prende 1 solo file e basta. Insomma, non scansioni completamente solo la directory in argomento.
Se vuoi scansionare non in profondità, allora o usi l'altro walkFileTree che ha il maxDepth, oppure usi l'altro metodo di Files che è newDirectoryStream, apposta per iterare su una singola directory.