一个需求: 读取写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;
}
}