
复制就可以使用了
package com.har.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class CsvUtil {
public static void writeToCsv(String headLabel, List dataList, BufferedWriter buffWriter) {
try {
//头部不为空则写入头部,并且换行
if (StringUtils.isNotBlank(headLabel)) {
buffWriter.write(headLabel);
buffWriter.newline();
}
//遍历list
for (String rowStr : dataList) {
//如果数据不为空,则写入文件内容,并且换行
if (StringUtils.isNotBlank(rowStr)) {
buffWriter.write(rowStr);
buffWriter.newline();//文件写完最后一个换行不用处理
}
}
//刷新流,也就是把缓存中剩余的内容输出到文件
buffWriter.flush();
} catch (Exception e) {
log.info("写入csv出现异常");
e.printStackTrace();
}
}
public static void writeToCsv(String headLabel, List dataList, String filePath, boolean addFlag) {
BufferedWriter buffWriter = null;
try {
//根据指定路径构建文件对象
File csvFile = new File(filePath);
//文件输出流对象,第二个参数时boolean类型,为true表示文件追加(在已有的文件中追加内容)
FileWriter writer = new FileWriter(csvFile, addFlag);
//构建缓存字符输出流(不推荐使用OutputStreamWriter)
buffWriter = new BufferedWriter(writer, 1024);
//头部不为空则写入头部,并且换行
if (StringUtils.isNotBlank(headLabel)) {
buffWriter.write(headLabel);
buffWriter.newline();
}
//遍历list
for (String rowStr : dataList) {
//如果数据不为空,则写入文件内容,并且换行
if (StringUtils.isNotBlank(rowStr)) {
buffWriter.write(rowStr);
buffWriter.newline();//文件写完最后一个换行不用处理
}
}
//刷新流,也就是把缓存中剩余的内容输出到文件
buffWriter.flush();
} catch (Exception e) {
log.info("写入csv出现异常");
e.printStackTrace();
} finally {
try {
//关闭流
if (buffWriter != null) {
buffWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static List readFromCsv(String filePath) {
ArrayList dataList = new ArrayList<>();
BufferedReader buffReader = null;
try {
//构建文件对象
File csvFile = new File(filePath);
//判断文件是否存在
if (!csvFile.exists()) {
log.info("文件不存在");
return dataList;
}
//构建字符输入流
FileReader fileReader = new FileReader(csvFile);
//构建缓存字符输入流
buffReader = new BufferedReader(fileReader);
String line = "";
//根据合适的换行符来读取一行数据,赋值给line
while ((line = buffReader.readLine()) != null) {
if (StringUtils.isNotBlank(line)) {
//数据不为空则加入列表
dataList.add(line);
}
}
} catch (Exception e) {
log.info("读取csv文件发生异常");
e.printStackTrace();
} finally {
try {
//关闭流
if (buffReader != null) {
buffReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return dataList;
}
}
2.测试代码
//这个改成你查数据库的SQL ListrecordList = financialReconciliationRecordRepository.findByYearMonthAndFlowIdMoreThanLimit1000(yearMonth, maxFlowId); List dataList = new ArrayList<>(); String title = "业务类型,转支付订单号,转支付支付宝流水号, *** 作金额(元),订单号,应用id,支付时间,处理状态"; if (!CollectionUtils.isEmpty(recordList)){ for (FinancialReconciliationRecord record : recordList) { StringBuilder sb = new StringBuilder(); sb.append(record.getBiz()).append(",") .append(record.getFlowId()).append("t").append(",") .append(record.getAlipayOrderNo()).append("t").append(",") .append(record.getAmount()).append(",") .append(record.getOrderNo()).append("t").append(",") .append(record.getAlipayAppId()).append("t").append(",") .append(record.getGmtPayment()).append(",") .append(record.isStatus()).append("t").append(",") ; dataList.add(sb.toString()); } } CsvUtil.writeToCsv(title,dataList,"D:/test/111.csv",true); recordList.clear();
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)