从android中的CSV解析器获取不正确的解析

时间:2015-10-22 03:53:19

标签: java android csv opencsv

我正在尝试使用openCSV库在android中解析一个简单的csv文件。我遇到的问题是它只读取第一列而没有其他内容。有人可以查看代码并提出可能出错的建议吗?

public final List<List<String>> readCsv(Context context) {
    List<String> exerciseList = new ArrayList<String>();
    List<String> setsList = new ArrayList<String>();
    List<String> repsList = new ArrayList<String>();
    List<List<String>> combinedList = new ArrayList<List<String>>();
    AssetManager assetManager = context.getAssets();

    try {
        InputStream csvStream = assetManager.open("dummyexerciseplan.csv");
        InputStreamReader csvStreamReader = new InputStreamReader(csvStream);
        CSVReader csvReader = new CSVReader(new InputStreamReader(getAssets().open("dummyexerciseplan.csv")),',');
        String[] line;

        // throw away the header
        csvReader.readNext();

        while ((line = csvReader.readNext()) != null) {
            System.out.println(line.toString());
            exerciseList.add(line[0]);
            setsList.add(line[1]);
            repsList.add(line[2]);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    combinedList.add(exerciseList);
    combinedList.add(setsList);
    combinedList.add(repsList);

    return combinedList;
}

这给出了一个数组超出范围的异常,因为数组的长度只有1而且我也在索引第二个和第三个元素。

这就是csv文件的样子:

Exercise Name,Sets,Repetitions,Day Of Week 
Bent over two-dumbell row,2,12,1 
Pull-Ups,2,12,1

1 个答案:

答案 0 :(得分:0)

问题在于我正在使用的csv文件。它在最后一行有一个尾随空格。这是导致越界异常的单个成员数组。