CSV文件读取实例

下面的实例供参考:[code]package com.ossez.feeds.incoming;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;

/**

  • cvs文件读取处理
  • @author YUCHENG

*/
public class CSVParser {
// 日志记录
private Logger logger = Logger.getLogger(CSVParser.class);

/**
 * 文件路径
 */
private String filePath;

/**
 * 字符编码
 */
private String encode;

/**
 * 数据存储
 */
private Map<Integer, List<String>> info;

/**
 * @param filePath
 *            需要解析的文件路径
 */
public CSVParser(String filePath) {
	this(filePath, "UTF-8");
}

/**
 * @param filePath
 *            需要解析的文件路径
 * @param encode
 *            字符编码
 */
public CSVParser(String filePath, String encode) {
	this.filePath = filePath;
	this.encode = encode;
	info = new HashMap<Integer, List<String>>();

	// 开始解析
	parseCsv();
}

/**
 * 获取行<code>row<row>中的数据,若该行<code>row<row>中的数据,返回<code>null<code>,否则返回该行中的数据
 * 
 * @param row
 *            记录行数
 * @return 当行数据
 */
public List<String> readLine(int row) {
	return info.get(row);
}

/**
 * 解析文件的核心代码
 * 
 * @return csv文件中的数据
 */
private List<String> parseCsv() {
	List<String> row = null;
	BufferedReader reader = null;
	try {
		// 读取文件
		reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), encode));
		String rowInfo = reader.readLine();
		// 行记录指针
		int rowIndex = 0;
		while (null != rowInfo && !"".equals(rowInfo.trim())) {
			row = new ArrayList<String>();
			// 分割数据列
			for (String cell : rowInfo.split(",")) {
				row.add(cell);
			}
			info.put(rowIndex, row);
			rowInfo = reader.readLine();
			++rowIndex;
		}
	} catch (FileNotFoundException e) {
		logger.error("file can not be found, file path: " + filePath);
	} catch (IOException e) {
		logger.error("I/O operations, file path: " + filePath);
	} finally {
		if (null != reader) {
			try {
				reader.close();
			} catch (IOException e) {
				logger.error("I/O operations, file path: " + filePath);
			}
		}
	}

	return row;
}

}
[/code]