¿Cómo leer línea a línea cuando mi txt está en la carpeta sin procesar?

Tengo un txt en mi carpeta sin formato con este texto:

38.706937,-0.494406,Alcoy,Alcoy,Comunidad Valenciana
37.605651,-0.991294,Vuelo1,Cartagena,Región de Murcia
37.652022,-0.719147,Vuelo2,La Manga del Mar Menor,Región de Murcia
42.817988,-1.644183,Vuelo3,Pamplona,Navarra
36.750779,-5.812395,Vuelo4,Arcos de la frontera,Andalucia

Y un método donde hago esto:

private void leerPuntosApp(){
    InputStream stream =getResources().openRawResource(R.raw.sitios);
    BufferedReader brin = new BufferedReader(new InputStreamReader(stream));
    String todoPartes = null;

    try {
        while(brin.read() != -1){
            todoPartes = brin.readLine();
            dibujarPuntos(todoPartes);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private void dibujarPuntos(String punto){
    Toast.makeText(this, punto, Toast.LENGTH_SHORT).show();
    String []separados = punto.split(",");

        Dialog dialog = hacerDialogo(separados[0],separados[1],
                  separados[2],separados[3],separados[4]);

        itemOverlay = new CargarItem(puntosMapa,this,dialog);

        lat = Double.parseDouble(separados[0])*1E6;
        lon = Double.parseDouble(separados[1])*1E6;

        GeoPoint point = new GeoPoint(lat.intValue(),lon.intValue());
        //GeoPoint point = calcularCoordenadas(listaDeSitios.get(i).getCiudad());

        item = new OverlayItem(point,separados[2], null);
        itemOverlay.addOverlay(item);
        mapOverlays.add(itemOverlay);
        mapView.postInvalidate();

}

Lo raro es que en el metodo dibujarPuntos solo dibujo el primer punto pero el brindis me muestra todas las lineas.

Gracias por tu ayuda.

preguntado el 11 de junio de 12 a las 19:06

2 Respuestas

Al hacer read (), está comiendo el primer carácter de la línea ... ¿está seguro de que Toast mostraba los datos correctos?

A ver si esto ayuda

try {
    while((todoPartes = brin.readLine()) != null){
        dibujarPuntos(todoPartes);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Y en lugar de usar Toast para iniciar sesión, simplemente use Log.d("MYTAG", punto) y luego verifique la salida de LogCat para ver si está analizando la información correctamente.

Respondido el 11 de junio de 12 a las 19:06

¿Podría cerrar la sesión de saparados[0] y ver cuál es su valor, debería ser 38.706... si el texto tiene espacios antes/después de la coma, entonces debe cambiar su split() para ser split("\\s*,\\s*") para que los espacios en blanco se coman. - atascado

encuentro el problema Si hago una subcadena de separados[0] como separados[0].substring(1) el primer punto se pinta bien pero las otras líneas se comen los primeros caracteres. No entiendo que sucedió esto, escribí esto y veo el txt y es correcto. - monchyrcg

Es cierto read() come mi primer carácter para todas las líneas excepto la primera. Pero si hago eso, dices que tengo una NumberFormatException en esta línea

lat = Double.parseDouble(separados[0])*1E6;

Respondido el 11 de junio de 12 a las 19:06

Esto debe agregarse como un "comentario" a mi respuesta a continuación (usando el enlace "agregar comentario") (respondí a esto en los comentarios de mis respuestas, a continuación) - atascado

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.