Existe una forma simple de resolver el primer problema:
Cuando crees cada fichero ponle como nombre el instante de tiempo en q se creó según el 'tiempo unix' (
http://es.wikipedia.org/wiki/Tiempo_Unix). Si los creas en java puedes obtener el tiempo unix con System.currentTimeMillis()
Después es solamente leer el fichero cuyo nombre, llevado a número, es el más grande.
slds;
Nup_