Lo del try/catch si se puede, pero no le veo la gracia, porque en los 2 les estas manejando con una general y no especifica...
En cuanto al error que te aparece el valor de ruta que es? una dirección o es solo el nombre del archivo? y si es la dirección se están pasando bien los separadores de directorios? por ejemplo para el caso de win: C:\\Archivo y no C:\Archivo.
Pon el mensaje del error...
Y no se si estaré en lo correcto pero creo que esto no te va a funcionar:
if(f.isFile() && f.getName().endsWith(".txt, .tmp, .ini"))
me párese que seria así:
if(f.isFile() && (f.getName().endsWith(".txt") || f.getName().endsWith(".tmp") || f.getName().endsWith(".ini")))