使用univocity-parsers讀取csv

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

輸出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章