在Java中,使用CSVReader进行批量读写操作可以通过以下步骤实现:
import java.io.*;
import com.opencsv.*;
public static void batchReadCSV(String inputFile, String outputFile) throws IOException {
// 创建CSVReader对象
CSVReader reader = new CSVReader(new FileReader(inputFile));
// 读取CSV文件的标题行
String[] header = reader.readNext();
// 创建一个ArrayList来存储批量读取的数据
List<String[]> batchData = new ArrayList<>();
// 批量读取CSV文件中的数据
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
batchData.add(nextLine);
// 设置批量大小,当达到批量大小时,将数据写入输出文件
if (batchData.size() >= BATCH_SIZE) {
writeBatchToCSV(batchData, outputFile);
batchData.clear();
}
}
// 将剩余的数据写入输出文件
if (!batchData.isEmpty()) {
writeBatchToCSV(batchData, outputFile);
}
// 关闭CSVReader对象
reader.close();
}
public static void writeBatchToCSV(List<String[]> batchData, String outputFile) throws IOException {
// 创建CSVWriter对象
CSVWriter writer = new CSVWriter(new FileWriter(outputFile));
// 写入标题行
String[] header = batchData.get(0);
writer.writeNext(header);
// 写入批量数据
for (String[] data : batchData) {
writer.writeNext(data);
}
// 关闭CSVWriter对象
writer.close();
}
public static void main(String[] args) {
String inputFile = "input.csv";
String outputFile = "output.csv";
try {
batchReadCSV(inputFile, outputFile);
System.out.println("批量读写CSV文件成功");
} catch (IOException e) {
System.err.println("批量读写CSV文件失败");
e.printStackTrace();
}
}
注意:在这个示例中,我们设置了一个默认的批量大小(BATCH_SIZE = 1000)。你可以根据实际需求调整批量大小。