Android 当我的txt在原始文件夹中时,如何逐行读取?

Android 当我的txt在原始文件夹中时,如何逐行读取?,android,Android,我的原始文件夹中有一个包含以下文本的txt文件: 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.7507

我的原始文件夹中有一个包含以下文本的txt文件:

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
我这样做的方法是:

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();

}
奇怪的是,dibujarPuntos的方法只是画出了第一个点,而toast向我展示了所有的线

谢谢您的帮助。

通过执行read()命令,您正在吃掉该行的第一个字符。。。你确定Toast显示的数据正确吗

看看这是否有帮助

try {
    while((todoPartes = brin.readLine()) != null){
        dibujarPuntos(todoPartes);
    }
} catch (IOException e) {
    e.printStackTrace();
}
不要使用Toast进行日志记录,只需使用
Log.d(“MYTAG”,punto)
,然后检查LogCat输出,看看它是否正确解析了信息。

这是真的读取()为除第一行以外的所有行使用我的第一个字符。但是如果我这样做了,你会说我在这行有一个数字形式的异常

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

这应该作为“评论”添加到我下面的答案中(使用“添加评论链接”)(我在下面我的答案的评论中对此作出了回应)你可以注销
saparados[0]
并查看它的值是什么,它应该是
38.706…
如果文本在逗号之前/之后有空格,那么你应该更改
split()
to
split(“\\s*,\\s*”)
这样空格就被吃掉了。我发现了问题。如果我像separados[0]那样做separados[0]的子字符串。子字符串(1)第一个点画得很好,但其他行被第一个字符吃掉了。我不明白这是怎么回事,我写了这个,我看到了txt和它的正确性。