当前位置:首页 > Java

java如何读写csv

2026-03-24 17:58:41Java

读取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();

第三方库推荐

  1. OpenCSV:功能全面,支持注解映射

    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>5.7.1</version>
    </dependency>
  2. Apache Commons CSV:轻量级解决方案

    java如何读写csv

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

标签: javacsv
分享给朋友:

相关文章

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入 java -version 检查是否安装。若未安装,需从Oracle官网或OpenJDK下载并配置环境…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…