一个临时的任务,需要把一个有几百万条记录的 CSV 文件分割成多个小一点的文件,没找到合适的分割工具,就花了一点时间研究了 CSV 文件的读写操作。成果如下:
CsvReader 读取
public static ArrayList<String> readCsvByCsvReader(String filePath) {
ArrayList<String> strList = null;
try {
ArrayList<String[]> arrList = new ArrayList<String[]>();
strList = new ArrayList<String>();
CsvReader reader = new CsvReader(filePath, ',', Charset.forName("GBK"));
// reader.readHeaders(); // 跳过表头,要读表头则注释掉
while (reader.readRecord()) {
System.out.println(Arrays.asList(reader.getValues()));
arrList.add(reader.getValues()); // 按行读取,并把每一行的数据添加到list集合
}
reader.close();
System.out.println("读取的行数:" + arrList.size());
// 如果要返回 String[] 类型的 list 集合,则直接返回 arrList
// 以下步骤是把 String[] 类型的 list 集合转化为 String 类型的 list 集合
for (int row = 0; row < arrList.si