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"));
}
}
读取CSV文件的公共方法
最新推荐文章于 2024-05-27 22:14:38 发布