Maven依赖:
<!-- CSV 依赖-->
<!-- https://mvnrepository.com/artifact/net.sourceforge.javacsv/javacsv -->
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
导包:
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
代码:
@Slf4j
public class CsvUtils {
/**
* 从SN文件中读取内容(可读取某一列也可读取整行,根据需要调整逻辑)
*
* @param filePath 文件路径
* @param encoding 编码方式
* @return 返回SN集合
*/
public static List<String> read(String filePath, String encoding) {
List<String> snList = new ArrayList<>();
try {
// 创建CSV读对象
CsvReader csvReader = new CsvReader(filePath, ',', Charset.forName(encoding));
// 读表头
csvReader.readHeaders();
while (csvReader.readRecord()) {
// 读一整行
// System.out.println(csvReader.getRawRecord());
// 读这行的某一列
String sn = csvReader.get("SN号");
if (!StringUtils.isEmpty(sn) && !snList.contains(sn)) {
//过滤:去空、去重
snList.add(sn);
}
}
} catch (Exception e) {
log.error("CSV文件读取失败,异常:", e);
}
return snList;
}
/**
* 生成结果文件
*
* @param filePath 结果文件目录
* @param encoding 编码方式
* @param headers 表头内容
* @param dataList 数据集合
*/
public static void write(String filePath, String encoding, String[] headers, List<String[]> dataList) {
try {
File file = new File(filePath).getParentFile();
if (!file.exists()) {
file.mkdirs();
}
// 创建CSV写对象
CsvWriter csvWriter = new CsvWriter(filePath, ',', Charset.forName(encoding));
// 写表头
if (headers != null && headers.length > 0) {
csvWriter.writeRecord(headers);
}
if (dataList != null && dataList.size() > 0) {
for (String[] content :
dataList) {
csvWriter.writeRecord(content);
}
}
csvWriter.close();
} catch (Exception e) {
log.error("CSV文件写入失败,异常:", e);
}
}
}