O nome do arquivo é UTF-8? (ä, ü, ö… é sempre '?')

Preciso ler o nome de alguns arquivos e colocá-los em uma lista como uma string. Não é tão difícil, eu só tenho alguns problemas com alguns personagens como ä, ö, ü ... eles são sempre como '?' na minha corda.

Qual é o problema? Bem, a codificação. Ok, isso deve ser fácil ... foi o que eu pensei. Então, eu tentei usar funções como:

new String(insert.getBytes("UTF-8") ounew String(insert.getBytes("ISO-8859-1"), "UTF-8") porque a maioria dos arquivos é ISO-8859-1

Não está ajudando. Este é o meu 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);
}

No final, existem muitas strings com '?' caracteres na minha lista. Como resolver o problema? E qual é a melhor maneira, se não houver apenas arquivos ISO-8859-1? (digamos que haja muitos arquivos codificados desconhecidos)

Obrigado

questionAnswers(5)

yourAnswerToTheQuestion