java如何读写csv
读取CSV文件
使用BufferedReader逐行读取CSV文件,配合String.split()分割逗号分隔的字段。注意处理字段内包含逗号或引号的情况。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CSVReader {
public static void main(String[] args) {
String csvFile = "data.csv";
String line;
String csvSplitBy = ",";
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
String[] data = line.split(csvSplitBy);
System.out.println("Column 1: " + data[0] + ", Column 2: " + data[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
对于复杂CSV格式,建议使用第三方库如OpenCSV:
import com.opencsv.CSVReader;
import java.io.FileReader;
CSVReader reader = new CSVReader(new FileReader("data.csv"));
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
System.out.println(nextLine[0] + " | " + nextLine[1]);
}
写入CSV文件
使用FileWriter配合StringBuilder构建CSV格式内容:
import java.io.FileWriter;
import java.io.IOException;
public class CSVWriter {
public static void main(String[] args) {
String csvFile = "output.csv";
try (FileWriter writer = new FileWriter(csvFile)) {
writer.append("Name,Age\n");
writer.append("John,30\n");
writer.append("Jane,25\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用OpenCSV库更安全地处理特殊字符:
import com.opencsv.CSVWriter;
import java.io.FileWriter;
CSVWriter csvWriter = new CSVWriter(new FileWriter("output.csv"));
String[] header = {"Name", "Age"};
csvWriter.writeNext(header);
csvWriter.writeNext(new String[]{"John", "30"});
csvWriter.close();
处理特殊字符
当字段包含逗号或换行符时,字段应该用双引号包裹:
// 手动处理
String escapedValue = "\"" + value.replace("\"", "\"\"") + "\"";
// 使用OpenCSV自动处理
csvWriter.writeNext(new String[]{"包含,逗号的值", "正常值"});
性能优化
对于大数据量,考虑使用缓冲流:
BufferedWriter bw = new BufferedWriter(new FileWriter("large.csv"));
bw.write("header1,header2\n");
bw.flush();
第三方库推荐
-
OpenCSV:功能全面,支持注解映射
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.7.1</version> </dependency> -
Apache Commons CSV:轻量级解决方案

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.9.0</version> </dependency>






