項目地址: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);
}
}
}
輸出