To respond to Marcus Malinow on his approach, this could be a bit quicker as the final load would be from a single QVD rather than many. What I like about my approach though (and why I have used a similar approach on a few occasions) is that if you know that a CSV has been modified you can simply delete the corresponding QVD and it will be recreated. Indeed you can delete all of the QVD's and the whole lot will be recreated from scratch.
It would be possible to put more logic into the load, eg. check the date on the CSV file and rebuild the corresponding QVD if the CSV had changed since the last load. The code above is a bare bones approach though.
When benchmarking the above solution I was amazed at how quick the FileSize function was - many files could be skipped with very little lag at all.