使用java中的列名读取csv文件

时间:2014-08-12 05:57:00

标签: java csv file-io opencsv

我有一个包含数百行和多列的.csv文件。我想从文件中读取特定的列。这些是我的专栏名称。

productId title imageUrlStr mrp price productUrl categories productBrand

从这里我想阅读我通过这种方式做的所有列

final String DELIMITER = ",";
        try
        {
            String line = "";
            //Create the file reader
            fileReader = new BufferedReader(new FileReader(fileToParse));

            //Read the file line by line
            while ((line = fileReader.readLine()) != null)
            {
                String name,imgURL,productURL,price;
                String[] images;
                //Get all tokens available in line
                String[] tokens = line.split(DELIMITER);
                name=tokens[1];
                images=tokens[2];
它是这样的。但问题是令牌[2],这是列' imageUrlStr'有多个值被昏迷分开。我只想从这个栏目中获得第一个价值。并且没有固定的数字,有些在该列中有3个值,有些有4个等等所以我不能再使用昏迷来分离该值以获得FIRST VALUE并转到下一列。 我的问题是我可以使用CSV文件中的列名分隔和拆分。所以指定的列名将存储到一个字符串,然后另一个字符串。所以我可以拆分imageurlstr的值并取第一个值,然后转到下一列。

2 个答案:

答案 0 :(得分:0)

我通常使用Apache Commons CSV。 {{3P>

答案 1 :(得分:0)

如果你的CSV格式正确,那么你在报价中的所有imageUrlStr值都是:" url1,url2,url3和#34;否则你的CSV格式就会出现问题。

有很多图书馆像: http://commons.apache.org/proper/commons-csv/ http://opencsv.sourceforge.net/

您甚至可以使用regexp进行解析。例如"(?:\\s*(?:\\\"([^\\\"]*)\\\"|([^,]+))\\s*,?|(?<=,)(),?)+?"