代码
package readCSV;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import com.csvreader.*;
public class Read {
public static void main(String[] args) {
read();
}
public static void read(){
String filePath = "C:/Users/donald/Desktop/AAA.csv";
try {
// 创建CSV读对象
CsvReader csvReader = new CsvReader(filePath);
// 读表头
csvReader.readHeaders();
System.out.println(csvReader.getHeaders());
System.out.println(csvReader.getRawRecord());
System.out.println(csvReader.getDelimiter() );
String[]headers=csvReader.getHeaders();
int a = 1;//开始以行数
List contents = new ArrayList<>(); // 内容队列
int b = 20170001;//文件名结尾部分
String filename ; // 文件名
while (csvReader.readRecord()){
if(a % 40000!=0){
// 读一整行
// System.out.println(csvReader.getRawRecord());
// System.out.println(csvReader.getValues()[0]);
// 读这行的某一列
// System.out.println(csvReader.get("Vendor"));
contents.add(csvReader.getValues());
a++;
}else{
contents.add(csvReader.getValues());
a++;
filename ="bbb"+b+".csv";
b++;
write(filename,headers,contents);
contents.clear();
}
}
// 最后再执行一次
filename ="STKFLW-tocml-"+b+".csv";
b++;
write(filename,headers,contents);
System.out.println("最后的文件名:"+filename);
System.out.println("最后一行的line_no:"+a);
contents.clear();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void write(String filename ,String[] headers,List contents){
String filePath = "C:/Users/donald/Desktop/split/"+filename;
try {
// 创建CSV写对象
CsvWriter csvWriter = new CsvWriter(filePath,',', Charset.forName("utf-8"));
//设置内容都用""包起来
csvWriter.setForceQualifier(true);
csvWriter.setTextQualifier('"');
csvWriter.setUseTextQualifier(false);
//CsvWriter csvWriter = new CsvWriter(filePath);
// 写表头
// String[] headers = {"编号","姓名","年龄"};
// String[] content = {"12365","张山","34"};
csvWriter.writeRecord(headers);
//遍历List里面的内容,写在文本里面
for (String[] content : contents) {
csvWriter.writeRecord(content);
}
csvWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
之前由于循环的if 条件写错了,创建了大量空文件csv 文件,一瞬间就几万个文件夹,容易把电脑搞死