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_