在android中读取CSV文件并将其放入Hashmap中

时间:2016-10-31 06:47:59

标签: java android arrays list csv

我正在尝试将CS​​V文件中的数据添加到列表中。目前我在下面有这个代码,但只要我尝试运行它,应用程序就会关闭。

alpha=-1,000,000,000

我已经询问过如何阅读CSV文件并获得了其他问题的清单,但是,在处理完毕后我无法解决我的问题。

我需要做的基本要点是从CSV文件中获取该列表,并从中创建一个我可以添加到“位置”的列表。

2 个答案:

答案 0 :(得分:0)

请勿尝试手动解析CSV,因为此格式周围存在许多极端情况(引用转义等)。使用univocity-parsers它应该可以正常工作。

试试这段代码:

    CsvParserSettings config = new CsvParserSettings();
    //configure what you need by hand, or just do this:
    config.detectFormatAutomatically();

    CsvRoutines csv = new CsvRoutines(config);

    File input = new File("C:\\Users\\MyName\\Documents\\MyApplication\\app\\src\\main\\res\\raw\\geo_locations.csv");

    Map<String, GeoLocation> locations = new LinkedHashMap<String, GeoLocation>();
    for(GeoLocation geo : csv.iterate(GeoLocation.class, input)){
        locations.put(geo.city, geo);
    }

我的GeoLocation实施:

public class GeoLocation{
    @Parsed(index = 0)
    String city;
    @Parsed(index = 1)
    Double longitude;
    @Parsed(index = 2)
    Double latitude;
    @Parsed(index = 3)
    TimeZone timeZone;

    public void setTimeZone(String timeZone){
        this.timeZone = TimeZone.getTimeZone(timeZone);
    }
}

答案 1 :(得分:0)

更改您的文件路径,如@Fildor所说,例如“assets”