¿Cómo leer un archivo en Java con codificación de caracteres específicos?

Estoy tratando de leer un archivo como UTF-8 o Windows-1252 dependiendo de la salida de este método:

public Charset getCorrectCharsetToApply() {
    // Returns a Charset for either UTF-8 or Windows-1252.
}

Hasta ahora, tengo:

String fileName = getFileNameToReadFromUserInput();
InputStream is = new ByteArrayInputStream(fileName.getBytes());
InputStreamReader isr = new InputStreamReader(is, getCorrectCharsetToApply());
BufferedReader buffReader = new BufferedReader(isr);

El problema que estoy teniendo es convertir elBufferedReader instancia de unFileReader.

Además:

El nombre del archivo en sí (fileName) no se puede confiar en ser un particularCharset; en algún momento el nombre del archivo contendrá caracteres UTF-8, y algunas veces Windows-1252. Lo mismo ocurre con el contenido del archivo (sin embargo, si el nombre del archivo y el contenido del archivosiempre tienen conjuntos de caracteres coincidentes).Sólo la lógica interior.getCorrectCharsetToApply() puede seleccionar el conjunto de caracteres para aplicar, por lo que intentar leer un archivo por su nombreanterior El hecho de llamar a este método podría muy bien resultar en, Java tratando de leer el nombre del archivo con la codificación incorrecta ... ¡lo que hace que muera!

¡Gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta