文件格式为.csv格式的文件,我们需要解析文件里面的数据,进行存储落库。这时就需要解析出.csv格式文件中的数据。
我的方式是创建一个对象,对象属性与文件的表头一致,这样文件的解析结果就是一个关于这个对象的集合。
maven依赖配置
net.sourceforge.javacsv
javacsv
2.0
com.opencsv
opencsv
3.8
工具类代码:
package com.chuxin.fight.demo.common;
import com.alibaba.fastjson.JSONObject;
import com.chuxin.fight.demo.dao.model.Hotel;
import com.csvreader.CsvReader;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* @FileName: CSVUtil
* @Description: 解析CSV格式文件的工具类
*/
@Slf4j
public class CSVUtil {
public static List csv() {
Hotel hotel = null;
//生成CsvReader对象,以,为分隔符,GBK编码方式
CsvReader r = null;
try {
List hotels = new ArrayList<>();
String csvFilePath = "E:\\AvailHotelSummary_V0.csv";
r = new CsvReader(csvFilePath, '|', Charset.forName("UTF-8"));
//读取表头
r.readHeaders();
//逐条读取记录,直至读完
while (r.readRecord()) {
hotel = new Hotel();
hotel.setHotelId(r.get(0));
hotel.setAddress(r.get("Address"));
hotel.setAddressCn(r.get("Address_CN"));
hotel.setAirportCode(r.get("AirportCode"));
hotel.setCityCode(r.get("CityCode"));
hotel.setCityName(r.get("CityName"));
hotels.add(hotel);
}
r.close();
return hotels;
} catch (Exception e) {
log.info("【航班信息】批量导入csv异常!", e);
return null;
} finally {
r.close();
}
}
public static void main(String[] args) {
List csv = csv();
System.out.println(csv.size());
log.info("cvs结果:{}",JSONObject.toJSONString(csv.get(6)));
for ( Hotel c :csv ) {
System.out.println(c.getHotelId());
}
}
}
通过工具类解析文件之后,我们将文件解析成我们的list集合。目标达成OK