在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)。你可以根據實際需求調整批量大小。