Java利用Univocity解析CSV文件

商运锋
2023-12-01

Univocity

Univocity是一个开源的Java项目.针对CSV、TSV定宽文本文件的解析,它以简洁的API开发接口提供了丰富而强大的功能.和其他解析库有所不同,Univocity以高性能,可扩展为出发点,设计了一套自有架构.基于这套架构,开发者可以构建出新的文件解析器.

加载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是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。
下属案例默认字符集均为UTF-8字符集,代入其他字符集的CSV文件运行结果会出现乱码.

利用Java调用Univocity的例子,代码如下:

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();
        }
    }
}
 类似资料: