java如何存csv
使用 Java 写入 CSV 文件
Java 提供了多种方式将数据写入 CSV 文件,以下是几种常见的方法:
使用 FileWriter 和手动拼接字符串
通过 FileWriter 直接写入字符串,手动处理逗号分隔和换行符:
import java.io.FileWriter;
import java.io.IOException;
public class CsvWriterExample {
public static void main(String[] args) {
String csvFile = "output.csv";
try (FileWriter writer = new FileWriter(csvFile)) {
writer.append("Name,Age,Email\n");
writer.append("John,30,john@example.com\n");
writer.append("Jane,25,jane@example.com\n");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 OpenCSV 库
OpenCSV 是一个流行的第三方库,简化了 CSV 文件的读写操作:
-
添加依赖(Maven):
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.7.1</version> </dependency> -
写入 CSV 文件:
import com.opencsv.CSVWriter; import java.io.FileWriter; import java.io.IOException;
public class OpenCsvExample { public static void main(String[] args) { String csvFile = "output.csv"; try (CSVWriter writer = new CSVWriter(new FileWriter(csvFile))) { String[] header = {"Name", "Age", "Email"}; writer.writeNext(header);
String[] record1 = {"John", "30", "john@example.com"};
String[] record2 = {"Jane", "25", "jane@example.com"};
writer.writeNext(record1);
writer.writeNext(record2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
#### 使用 Apache Commons CSV
Apache Commons CSV 是另一个强大的 CSV 处理库:
1. 添加依赖(Maven):
```xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
- 写入 CSV 文件:
import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; import java.io.FileWriter; import java.io.IOException;
public class CommonsCsvExample { public static void main(String[] args) { String csvFile = "output.csv"; try (FileWriter writer = new FileWriter(csvFile); CSVPrinter printer = new CSVPrinter(writer, CSVFormat.DEFAULT .withHeader("Name", "Age", "Email"))) { printer.printRecord("John", 30, "john@example.com"); printer.printRecord("Jane", 25, "jane@example.com"); } catch (IOException e) { e.printStackTrace(); } } }

#### 使用 Java 8 的 Stream API
结合 Java 8 的 Stream API 和 `Files` 类可以简洁地写入 CSV:
```java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
public class Java8CsvWriter {
public static void main(String[] args) {
String csvFile = "output.csv";
List<String> lines = Arrays.asList(
"Name,Age,Email",
"John,30,john@example.com",
"Jane,25,jane@example.com"
);
try {
Files.write(Paths.get(csvFile), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 处理特殊字符:如果数据包含逗号或换行符,需要使用引号包裹字段。
- 性能考虑:对于大数据量,建议使用缓冲流(如
BufferedWriter)或专门的库(如 OpenCSV)。 - 编码问题:确保文件编码一致(通常使用 UTF-8)。
- 依赖管理:如果使用第三方库,确保正确添加依赖项。






