将CSV文件解析为数组

时间:2014-08-26 11:02:05

标签: java arrays parsing csv maps

我正在制作一个Android应用程序,其中包含CSV文件,其中包含公园内人数的值。我的目标是制作一个应用程序,输出数据的统计分析,如手段,模式和图表。我的问题是我不确定如何在java中存储数据。可以有任意数量的行,但总会有72列。从下面我可以看到,我使用了一个简单的数组,但这显然不起作用,只能存储最后一个观察结果。我在想地图但不确定如何实现它。很感谢任何形式的帮助。

package messy;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Playing
{
    static String[] tokens;
    public static void main(String[] args)
    {
    //Input file which needs to be parsed
    String fileToParse = "C:/Users/acer/Desktop/soparc shit/SOPARC.csv";
    BufferedReader fileReader = null;

    //Delimiter used in CSV file
    final String DELIMITER = ",";
    try
    {
        String line = "";
        //Create the file reader
        fileReader = new BufferedReader(new FileReader(fileToParse));
         fileReader.readLine();
        //Read the file line by line
        while ((line = fileReader.readLine()) != null) 
        {
            //Get all tokens available in line
            tokens = line.split(DELIMITER);

        }
    } 
    catch (Exception e) {
        e.printStackTrace();
    } 
    finally
    {
        try {
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

   }
}

3 个答案:

答案 0 :(得分:1)

您可以使用CSV分析器,例如OpenCSV

CSVReader reader = new CSVReader(new FileReader(fileToParse));  
String[] recordArray = null;

while ((recordArray = reader.readNext()) != null) {
    // use recordArray...
}

答案 1 :(得分:0)

你需要使用这样的地图:

Map<String, List<String>> values

这里有一个非常好的和详细的例子:

Reading CSV file in Java and storing the values in an int array

答案 2 :(得分:0)

除了已提及的OpenCSV之外,另请参阅: