存一波生成csv文件的代码,以便后续Ctrl C ,Ctrl V
参考博文:https://blog.youkuaiyun.com/wangchaox123/article/details/93646324
/**
* <生成单个csv文件>
*
* @param filePath 文件路径
* @param fileName 文件名
* @param colNameList 列头集合
* @param dataList 数据集合
* @return File
* @throws
*/
public static File generateCsv(String filePath, String fileName,
List<String> colNameList, List<Object[]> dataList)
throws IOException {
BufferedWriter csvWrite = null;
String fileRealPath = filePath + fileName + ".csv" ;
try {
//定义文件类型
File csvFile = new File(fileRealPath);
//获取文件目录
File parent = csvFile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
//创建文件
csvFile.createNewFile();
csvWrite = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"), 1024);
//处理用Excel打开出现中文乱码
csvWrite.write('\ufeff');
//写入表头
write(colNameList, csvWrite);
//写入数据
for (Object[] dataPerRow : dataList) {
//转换格式
List<?> dataPerRowList = new ArrayList<>(Arrays.asList(dataPerRow));
write(dataPerRowList, csvWrite);
}
csvWrite.flush();
return csvFile;
} catch (IOException e) {
logger.error("csv文件生成失败,原因:", e);
throw new IOException("csv文件生成失败");
} finally {
try {
if (null != csvWrite) {
csvWrite.close();
}
} catch (IOException e) {
logger.error("关闭文件流失败,原因:", e);
throw new IOException("关闭文件流失败");
}
}
}
/**
* @param dataList
* @param csvWrite
* @return
* @Title write
* @Description: 将数据按行写入数据
*/
private static void write(List<?> dataList, BufferedWriter csvWrite)
throws IOException {
for (Object data : dataList) {
StringBuffer buffer = new StringBuffer();
buffer.append("\"");
if (null == data) {
buffer.append(" ");
} else {
if (data instanceof Number) {
buffer.append(data);
} else if (data instanceof Date) {
buffer.append(
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) data));
} else {
buffer.append(data);
}
}
String rowStr = buffer.append("\",").toString();
csvWrite.write(rowStr);
}
csvWrite.newLine();
}
/**
* 批量删除文件
*
* @param fileRealPathList 文件绝对路径(带文件名)
*/
public static void deleteFiles(List<String> fileRealPathList) {
if (!CollectionUtils.isEmpty(fileRealPathList)) {
File file = null;
for (String fileRealPath : fileRealPathList) {
file = new File(fileRealPath);
if (file.exists() && file.isFile()) {
file.delete();
}
}
}
}