Il problema e' che readdir() restituisce il semplice NOME del file, non il percorso completo, quindi quando esegui qualche funzione su quel file devi aggiungere la directory in cui si trova per ottenere il path esatto.