第一次遇到需要解析CSV文件的需求,遂记录一下,以备后用。若有幸能为其他人带来帮助,那实在是我的荣幸。
代码正文:
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.PathUtil; import cn.hutool.core.text.csv.CsvParser; import cn.hutool.core.text.csv.CsvReadConfig; import cn.hutool.core.text.csv.CsvRow; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON;
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays;
class CsvFileReader {
public static void main(String[] args) { String path = "D:\\file\\abc.csv"; File file = FileUtil.file(path); BufferedReader reader = PathUtil.getReader(file.toPath(), StandardCharsets.UTF_8); CsvReadConfig csvReadConfig = new CsvReadConfig().setHeaderLineNo(0L); CsvParser csvParser = new CsvParser(reader, csvReadConfig); try { while (csvParser.hasNext()) { // 加工处理数据 CsvRow next = csvParser.next(); Map<String, String> fieldDataMap = next.getFieldMap(); //业务数据处理 SyncTreatyInfoReq req = CompanyCulumnConvertEunm.convert(fieldDataMap); SyncEmployeeInfoList employeeInfoList = EmployeeCulumnConvertEunm.convert(fieldDataMap); SyncTreatyInfoList treatyInfoList = TreatyCulumnConvertEunm.convert(fieldDataMap); req.setEmployeeInfoList(Arrays.asList(employeeInfoList)); req.setTreatyInfoList(Arrays.asList(treatyInfoList)); SyncTreatyInfoResp syncTreatyInfoResp = accountSignController.syncTreatyInfo(req); log.info("同步数据结果:" + JSON.toJSONString(syncTreatyInfoResp)); } try { csvParser.close(); } catch (IOException e) { e.printStackTrace(); } } }
}