读取CSV文件的公共方法




import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.IOUtils;

public class CsvParse {
/**
*
* 读取CSV文件得到数据列表 <br>
* 〈功能详细描述〉
*
* @param in:文件输入流
* @param columnNames:字段名列表
* @param startRow:从第几行开始读
* @param splitCharacter:分隔符
* @param encoding:文件的字符集编码
* @return 数据列表
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static List<Map<String, Object>> parse(InputStream in, String[] columnNames, int startRow,
String splitCharacter, String encoding) {
// 读取到的CSV数据列表
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
BufferedReader br = null;

try {
br = new BufferedReader(new InputStreamReader(in, encoding));

String line = null;
int lineNum = 0;
while ((line = br.readLine()) != null) {
lineNum++;
if (lineNum < startRow) {
continue;
}

Map<String, Object> lineMap = new HashMap<String, Object>();
String[] columns = line.split(splitCharacter);

for (int i = 0; i < columns.length; i++) {
lineMap.put(columnNames[i], columns[i]);
}

dataList.add(lineMap);
}
} catch (Exception e) {
//
} finally {
IOUtils.closeQuietly(br);
}

return dataList;
}

/**
*
* 默认从第一行开始读,文件分隔符为逗号,文件字符集编码为UTF-8 <br>
* 〈功能详细描述〉
*
* @param in
* @param columnNames
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static List<Map<String, Object>> parse(InputStream in, String[] columnNames) {
return parse(in, columnNames, 1, ",", "UTF-8");
}

public static void main(String[] args) throws FileNotFoundException {
FileInputStream is = new FileInputStream("D:/a.csv");
String[] columnNames = { "userName", "password", "address", "age" };
System.out.println(parse(is, columnNames, 1, ",", "UTF-8"));
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值