1、下载javacsv.jar 包导入到项目中
2、需求:在一个csv文件中生成多条数据。
思路:在一个csv文件中复制多条数据;从一个csv文件读出内容分别放到两个数组中,一个数组A包括头部,另一个数组B去掉头部,复制几次B数据,然后添加到A数据中,最后把A数据写出即可.
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class AFileData {
public static void main(String[] args) throws Exception {
createAFile();
}
private static void createAFile() throws IOException {
int times = 4;//4遍
String aFilePath = "E:\\SMT\\20170105\\dg5_smt_etl_20170105\\File-H20\\A8001AIGSJ16100019.csv";
String outputFile = "E:\\SMT\\20170105\\dg5_smt_etl_20170105\\File-H20\\d.csv";
CsvReader readerA = new CsvReader(aFilePath, ',', Charset.forName("GBK"));
CsvWriter csvOutput = new CsvWriter(new FileWriter(outputFile, true), ',');
List<String> listAFile = new ArrayList<>();//定义包括头部的数据
List<String> list_rmHeader = new ArrayList<>();//定义移除头部的数据
while (readerA.readRecord()) {
listAFile.add(readerA.getRawRecord());
list_rmHeader.add(readerA.getRawRecord());
}
list_rmHeader.remove(0);//移除头部的数据,头部数据有2行,如下图所示
list_rmHeader.remove(0);//移除头部的数据,头部数据有2行
for (int i = 1; i < times; i++) {
listAFile.addAll(list_rmHeader);
}
int size = list_rmHeader.size();
int headerLines = 2;//头部数据有2行
for (int i = 0; i < listAFile.size(); i++) {
String row = listAFile.get(i);
String[] data = row.split(",");
if (i >= headerLines) {
data[0] = "" + (Integer.parseInt(data[0]) +(i-headerLines)/size*size);//当前编号+(行数-个数)/数据个数*A文件数据个数
}
csvOutput.writeRecord(data);
}
System.out.println("A文件数据生成到---------"+outputFile);
csvOutput.flush();
csvOutput.close();
readerA.close();
}
}