Univocity是一个开源的Java项目.针对CSV、TSV定宽文本文件的解析,它以简洁的API开发接口提供了丰富而强大的功能.和其他解析库有所不同,Univocity以高性能,可扩展为出发点,设计了一套自有架构.基于这套架构,开发者可以构建出新的文件解析器.
<!-- https://mvnrepository.com/artifact/com.univocity/univocity-parsers -->
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.9.1</version>
</dependency>
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。
下属案例默认字符集均为UTF-8字符集,代入其他字符集的CSV文件运行结果会出现乱码.
import com.univocity.parsers.common.processor.RowListProcessor;
import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;
import java.io.File;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String file_address="";//CSV文件地址
try
{
CsvParserSettings parserSettings=new CsvParserSettings();
parserSettings.setLineSeparatorDetectionEnabled(true);//借助于配置对象自动侦测输入中包含何种行分隔离符序列
RowListProcessor rowListProcessor=new RowListProcessor();//用来将每个解析的行存储在列表中
parserSettings.setRowProcessor(rowListProcessor);
parserSettings.setHeaderExtractionEnabled(true);//把第一个解析行看作文件中每列的标题
CsvParser parser=new CsvParser(parserSettings);
parser.parse(new File(file_address));
String[] headers=rowListProcessor.getHeaders();
List<String[]> rows=rowListProcessor.getRows();
for(int i=0;i<rows.size();i++)
{
System.out.println(Arrays.asList(rows.get(i)));
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}