如何用java解析CSV文件

首先看一下csv文件的规则: csv(Comma Separate Values)文件即逗号分隔符文件,它是一种文本文件,可以直接以文本打开,以逗号分隔。windows默认用excel打开。它的格式包括以下几点(它的格式最好就看excel是如何解析的。): ①每条记录占一行; ②以逗号为分隔符; ③逗号前后的空格会被忽略; ④字段中包含有逗号,该字段必须用双引号括起来; ⑤字段中包含有换行符,该字段必须用双引号括起来; ⑥字段前后包含有空格,该字段必须用双引号括起来; ⑦字段中的双引号用两个双引号表示; ⑧字段中如果有双引号,该字段必须用双引号括起来; ⑨第一条记录,可以是字段名; ⑩以上提到的逗号和双引号均为半角字符。 下面给出一种解析方法,来自:http://blog.csdn.net/studyvcmfc/article/details/6232770,原文中有一些bug,经过修改,测试ok的代码如下: 该解析算法的解析规则与excel或者wps大致相同。另外包含去掉注释的方法。 构建方法该类包含一个构建方法,参数为要读取的csv文件的文件名(包含绝对路径)。 普通方法: ① getVContent():一个得到当前行的值向量的方法。如果调用此方法前未调用readCSVNextRecord方法,则将返回Null。 ② getLineContentVector():一个得到下一行值向量的方法。如果该方法返回Null,则说明已经读到文件末尾。 ③ close():关闭流。该方法为调用该类后应该被最后调用的方法。 ④ readCSVNextRecord():该方法读取csv文件的下一行,如果该方法已经读到了文件末尾,则返回false; ⑤ readAtomString(String):该方法返回csv文件逻辑一行的第一个值,和该逻辑行第一个值后面的内容,如果该内容以逗号开始,则已经去掉了该逗号。这两个值以一个二维数组的方法返回。 ⑥ isQuoteAdjacent(String):判断一个给定字符串的引号是否两两相邻。如果两两相邻,返回真。如果该字符串不包含引号,也返回真。 ⑦ readCSVFileTitle():该方法返回csv文件中的第一行——该行不以#号开始(包括正常解析后的#号),且该行不为空 解析接口代码: import java.io.BufferedReader;       import java.io.FileNotFoundException;       import java.io.FileReader;       import java.io.IOException;    … 继续阅读