Uso de archivos con diferentes codificaciones

Buenas noches, estoy trabajando con archivo de texto plano, sin embargo estos pueden tener diferentes codificaciones puesto que algunos están en el idioma inglés y otro en español (Acentos).

Existe alguna forma de leer el contenido de los archivos con una codificación automática y que si es el caso de que estén escritos en español respete los acentos y otros signos.

BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(strRutaArchivoP), "ISO-8859-1"));

En el código especifico el tipo ISO-8859-1, pero si intento abrir un archivo de tipo UTF-8 lo acentos me aparecen como signos extraños, por el contrario los tipo ANSI se abre perfectamente.

Existe alguna forma de eliminar el tener que especificar que tipo de archivo es o qué se haga de forma automática, o también de reconocer antes de abrir el documento que tipo de codificación tiene.

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Se puede hacer eso? Es decir,

Se puede hacer eso?

Es decir, automatizar el hecho de identificar el charset de un fichero?
Según yo no se puede hacer, puedes adivinarlo, y ésta respuesta de SO me respalda.
También me encontré ésta otra respuesta, que habla de una biblioteca... habría que revisar.

Imagen de Gallosuarez

Posible solución ...

cyberserver:

Que tal, un gusto en saludarte .... mira revisa está liga tal vez te pueda ayudar en algo

https://code.google.com/p/juniversalchardet/

Al final del contenido de esta misma liga, viene otra que también te puede ayudar...

Saludos,
GST

PD. No dejes de decirnos como te fué ...

Imagen de cyberserver

Agradecido

Buenas noches.

Muchas gracias por sus respuestas, las revise las dos y puedo decir lo siguiente:

1ra respuesta : Se segmenta en un mundo completo de posibilidades y de respuesta, por el contrario me dio la impresión de que todas esas respuestas solo se aventaban la bolita y ninguno concluía diciendo VIVA ME SALIO!!!!, pero sin embargo te agradesco mucho neko.

2da respuesta: Sigo sin poder creer que halla funcionado de una forma tan fácil (Fácil para quien use la Api, para quien la programo no lo creo tanto). Pero gracias a esa respuesta por parte de Gallosuarez puedo decir VIVAAAAA SALIO SI FUNCIONO!!!!!!!!!

Aquí el código "Según lo que decía la liga que nos pasaste":

 public String detectarCodificacion(String strRutaArchivoP) throws Throwable{
        byte[] buf;
        java.io.FileInputStream fis;
        UniversalDetector detector;
        int nread;
        String encoding;

        try{    
            buf= new byte[4096];
            fis = new java.io.FileInputStream(strRutaArchivoP);
            detector = new UniversalDetector(null);
            while ((nread = fis.read(buf)) > 0 && !detector.isDone()) {
              detector.handleData(buf, 0, nread);
            }
            detector.dataEnd();
            encoding = detector.getDetectedCharset();
            detector.reset();
            return encoding;
        }catch (IOException e) {
            System.out.println("Error en - Clase(" + new Exception().getStackTrace()[0].getClassName() + ") "
                      + "- Método(" + new Exception().getStackTrace()[0].getMethodName() + ") \n" + e);
        }
}

Y después concluí así

           String strTipoCod;
           BufferedReader reader;

            strTipoCod=this.detectarCodificacion(strRutaArchivoP);
            if (strTipoCod==null){
                strTipoCod="ISO-8859-1";
            }
           reader =new BufferedReader(new InputStreamReader(new FileInputStream(strRutaArchivoP),strTipoCod));  

A mi me funciono, puesto que solo estoy ocupando archivos en español y en inglés.

Saludos y de nuevo muchas gracias, me has salvado la vida!!!!!