Apache commons.csv 1.9.0 读写csv文件

谢选
2023-12-01

一个需求: 读取写csv文件
这个csv文件特点, 每个元素都有 双引号 , 元素之间的分隔符是 英文逗号

要求: 从csv文件读取到的数据以一个 String 的"双重"列表返回
同样的: 由一个String的"双重"列表写入csv文件.

工具如下可以 直接 使用.

package arg.example.utils;
import org.apache.commons.csv.*;

import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author zjzstart
 * @create 2022-08-12-10:22
 */
public class CSVUtil {

    public static void writeCSVFile(String writeFilePath, List<List<String>> contentArrayList) throws Exception{
        String fileName = writeFilePath;
        File file = new File(fileName);
        if(file.exists())
            file.delete();
        PrintWriter printWriter = new PrintWriter(file);
        CSVPrinter print = CSVFormat.DEFAULT.builder().setDelimiter(',').setQuoteMode(QuoteMode.ALL).setQuote('"').build().print(printWriter);
        print.printRecords(contentArrayList);
        print.flush();
        print.close();

    }

    public static List<List<String>> readCSVFile(String filePath) throws Exception{

        FileReader fileReader=new FileReader(filePath);

        CSVParser parse = CSVFormat.DEFAULT.builder().setDelimiter(',').setQuoteMode(QuoteMode.ALL).setQuote('"').build().parse(fileReader);
        List<List<String>> data = new LinkedList<>();
        for (CSVRecord record : parse.getRecords()) {
            List<String> list = new ArrayList<>();
            for (String s : record) {
//                String[] split = s.split("\"");
                list.add(s);
            }
            data.add(list);
        }
        fileReader.close();
        parse.close();
        return data;
    }



}


 类似资料: