¿Obtener el nombre del archivo como UTF-8? (ä, ü, ö ... siempre es '?')

Tengo que leer el nombre de algunos archivos y ponerlos en una lista como una cadena. No es tan difícil, solo tengo algunos problemas con algunos personajes como ä, ö, ü ... siempre son como '?' en mi cuerda.

¿Cuál es el problema? Pues la codificación. Ok, esto debería ser fácil ... eso es lo que pensé. Así que traté de usar funciones como:

new String(insert.getBytes("UTF-8") onew String(insert.getBytes("ISO-8859-1"), "UTF-8") porque la mayoría de los archivos son ISO-8859-1

No está ayudando. Este es mi código:

...
File[] fileList = dir.listFiles();
String insert;
for(File f : fileList) {
...
insert=f.getName().substring(0,f.getName().length()-4);
                insert=insert.charAt(0)+insert.substring(1,insert.length()).toLowerCase().replaceFirst("([0-9]*(_s?(i)?(_dat)?)*$)", "").replaceFirst("_", " ");
...
System.out.println("test UTF8: " + new String(insert.getBytes("UTF-8"))); //not helping
System.out.println("test ISO , UTF8: " + new String(insert.getBytes("ISO-8859-1"), "UTF-8")); //not helping
...
names.add(insert);
}

Al final hay muchas cadenas con '?' personajes en mi lista ¿Como solucionar el problema? ¿Y cuál es la mejor manera si no solo hay archivos ISO-8859-1? (digamos que hay muchos archivos codificados desconocidos)

¡Gracias