项目地址:https://github.com/uniVocity/univocity-parsers
速度最快功能最全的CSV开发库之一
uniVocity-parsers is a collection of extremely fast and reliable parsers for Java. It provides a consistent interface for handling different file formats, and a solid framework for the development of new parsers.
(uniVocity-parsers是一组可靠快速的Java解析器集合,包含多种文件类型的处理接口,为开发新解析器提供一个坚实的框架。)
uniVocity-parsers 目前支持的解析器:
- CSV文件(你能找到的最快的Java解析器)
- 固定宽度格式文件
- TSV文件
准备:
1. jar下载
2.maven配置方式(pom.xml文件添加)
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.6.1</version>
<type>jar</type>
</dependency>
编码:
testcsv.csv内容(#注释的不会读取)
name,age,like
sun,18,eat
编码:
package com.testcsv;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;
public class TestUniVocityParse {
public static void main(String[] args) {
// 创建csv解析器settings配置对象
CsvParserSettings settings = new CsvParserSettings();
// 文件中使用 '\n' 作为行分隔符
// 确保像MacOS和Windows这样的系统
// 也可以正确处理(MacOS使用'\r';Windows使用'\r\n')
settings.getFormat().setLineSeparator("\n");
// 创建CSV解析器(将分隔符传入对象)
CsvParser parser = new CsvParser(settings);
// 调用beginParsing逐个读取记录,使用迭代器iterator
parser.beginParsing(getReader("testcsv.csv"));
String[] row;
while ((row = parser.parseNext()) != null) {
System.out.println(Arrays.toString(row));
}
// 在读取结束时自动关闭所有资源,
// 或者当错误发生时,可以在任何使用调用stopParsing()
// 只有在不是读取所有内容的情况下调用下面方法
// 但如果不调用也没有非常严重的问题
parser.stopParsing();
}
public static Reader getReader(String relativePath) {
try {
return new InputStreamReader(TestUniVocityParse.class.getResourceAsStream(relativePath), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("Unable to read input", e);
}
}
}
输出