一、背景介绍
最近需要做一个导入,格式为.csv格式的,因为是系统间相互通信,所以限定导入格式为.csv,本篇文章做一个记录。
二、过程
因为功能开发比较着急,所以是以效率为前提:
主要代码如下:
/**
* <b>将csv文件通过IO流解析,转化数组形式的集合<b>
*
* @param file 文件
*/
public static List<String[]> csv(MultipartFile file) {
List<String[]> csvList = new ArrayList<String[]>();
try {
InputStreamReader is = new InputStreamReader(file.getInputStream(), "UTF-8");
CSVParser csvParser = new CSVParserBuilder().build();
CSVReader reader = new CSVReaderBuilder(is).withCSVParser(csvParser).build();
reader.skip(1);
csvList = reader.readAll();
} catch (IOException e) {
e.printStackTrace();
}
return csvList;
}
调用
<String[]> list = CsvUtil.csv(file);
接收转换
for (String[] product : list) {
//转换最终的model
}
后面为了便于查找问题,所以将用户上传的文件保存在aliyun oss 上面
/**
* 上传文件流
*
* @param inputStream
* @return
*/
public String uploadOssResource(String path, InputStream inputStream) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(ENDPOINT, aliKey, aliSecret);
// 上传文件流。
ossClient.putObject(BUCKET, path, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
return CDN_HOST + path;
}
忘记了pom 文件引入:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.4</version>
</dependency>
三、总结
主要记录一下,感谢大家阅读。