Java: como determinar a codificação de conjunto de caracteres correta de um fluxo

Com referência ao seguinte segmento:Aplicativo Java: Não foi possível ler o arquivo codificado iso-8859-1 corretamente

Qual é a melhor maneira de determinar programaticamente a codificação correta do conjunto de caracteres de um fluxo de entrada / arquivo?

Eu tentei usar o seguinte:

File in =  new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());

Mas em um arquivo que eu sei que está codificado com ISO8859_1, o código acima gera ASCII, que não está correto, e não me permite renderizar corretamente o conteúdo do arquivo de volta ao console.

questionAnswers(15)

yourAnswerToTheQuestion