java CSV 工具类 追加写入文件

java CSV 工具类 追加写入文件,第1张

java CSV 工具类 追加写入文件 1.代码

复制就可以使用了

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
					List recordList = 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();

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5709417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-18

发表评论

登录后才能评论

评论列表(0条)

    保存