You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java删除CSV指定索引列后写入替换本地文件的实现方法

Java CSV删除指定列并写入本地实现方案

你现有代码仅完成了CSV逐行读取、打印索引15列内容的逻辑,要实现删除目标列、写入本地文件的需求,直接按如下方式调整即可:

  • 核心逻辑说明:逐行读取CSV内容时,跳过索引为15的列,将剩余字段按原有顺序拼接为新行,再通过CSV写入组件将所有处理后的行输出到目标路径。
  • 避坑提示:不要直接在读取过程中覆盖原文件,先输出到新文件路径,确认结果正确后再替换原文件,避免数据丢失。

可直接运行的完整代码

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

public class CsvHandleDemo {
    public static void main(String[] args) {
        // 替换为你的源CSV文件实际路径
        String sourceFile = "/your/local/path/source.csv";
        // 替换为处理后文件的输出路径
        String targetFile = "/your/local/path/processed.csv";
        // 固定要删除的列索引
        final int DELETE_COL = 15;

        // 用try-with-resources语法自动管理流,无需手动关闭,避免文件句柄泄漏
        try (
            CSVReader csvReader = new CSVReader(new FileReader(sourceFile));
            CSVWriter csvWriter = new CSVWriter(new FileWriter(targetFile))
        ) {
            String[] currentLine;
            while ((currentLine = csvReader.readNext()) != null) {
                // 处理长度不足的异常行,直接写入避免索引越界报错
                if (currentLine.length <= DELETE_COL) {
                    csvWriter.writeNext(currentLine);
                    continue;
                }
                // 组装删除目标列后的新行
                List<String> processedLine = new ArrayList<>();
                for (int i = 0; i < currentLine.length; i++) {
                    if (i != DELETE_COL) {
                        processedLine.add(currentLine[i]);
                    }
                }
                // 写入处理后的行
                csvWriter.writeNext(processedLine.toArray(new String[0]));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

常见问题处理

  • 乱码问题:如果CSV文件是GBK、UTF-8 BOM等非默认编码,初始化FileReader、FileWriter时指定对应编码即可,例如JDK11+可以用new FileReader(sourceFile, Charset.forName("GBK"))指定GBK编码读取。
  • 依赖问题:如果项目中还没引入OpenCSV的CSVWriter类,先把对应依赖包引入项目,确保读写类都能正常加载。
  • 格式问题:默认CSVWriter用逗号做字段分隔符、双引号包裹特殊字段,符合通用CSV规范,如果你的文件用其他分隔符,初始化CSVWriter时传入自定义分隔符参数即可。

内容的提问来源于stack exchange,提问作者Chgn_Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:12:23