csv格式读取通用类
需要添加javacsv.jar 支持
import static net.etongbao.common.utils.StringUtils.toStringWithOutNull;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.csvreader.CsvReader;import com.csvreader.CsvWriter;/** * 解析CSV文件 * * @author Fu Wei * */public class CsvUtils {/** 编码 */private static final String ENCODING = "UTF-8";private static final Logger LOG = LoggerFactory.getLogger(CsvUtils.class);/** * csv格式读 * * @param String * @return List<Map<String, Object>> * @throws CsvException */public static List<Map<String, Object>> csvReader(String csvText) {List<Map<String, Object>> csvList = new ArrayList<Map<String, Object>>();try {CsvReader reader = CsvReader.parse(csvText);// 考虑到图片大小,设置最大长度不受限制reader.setSafetySwitch(false);String[] headers = null;if (reader.readHeaders()) {headers = reader.getHeaders();while (reader.readRecord()) {Map<String, Object> csvMap = new HashMap<String, Object>();for (String head : headers) {csvMap.put(head, reader.get(head));}csvList.add(csvMap);}LOG.debug("CsvUtils--->csvList:{}", csvList);return csvList;} else {LOG.error("csv读取头失败");}} catch (UnsupportedEncodingException e) {LOG.error("csv读取编码异常");} catch (IOException e) {LOG.error("csv读取IO异常", e);}return null;}/** * csv写 * * @param csvList * @return * @throws CsvException */public static String csvWriter(List<Map<String, Object>> csvList) {String csvText = null;ByteArrayOutputStream stream = new ByteArrayOutputStream();CsvWriter writer = new CsvWriter(stream, ',', Charset.forName(ENCODING));if (csvList != null && csvList.size() > 0) {// 获取第一行map key,Map<String, Object> headMap = csvList.get(0);if (headMap != null && 0 <= headMap.size()) {// 提取cvs列Iterator<String> it = headMap.keySet().iterator();try {while (it.hasNext()) {writer.write(it.next());}writer.endRecord();boolean falg = false;for (Map<String, Object> csvMap : csvList) {if (falg) {writer.endRecord();}for (Entry<String, Object> map : csvMap.entrySet()) {String value = toStringWithOutNull(map.getValue());writer.write(value);}falg = true;}writer.close();csvText = stream.toString();stream.close();return csvText;} catch (IOException e) {LOG.warn("csv写入IO异常");}} else {LOG.warn("拆解cvs数据为空");}} else {LOG.warn("拆解cvs数据为空");}return null;}}?