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

Java中如何读取CSV文件指定索引位置的行并存入数组

Java读取CSV指定行实现方案

无第三方依赖实现(适配小文件场景)

直接通过BufferedReader逐行计数匹配目标行,适合100M以内的小型CSV文件:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CsvLineReader {
    // 行号从1开始计数的实现
    public static String readTargetLine(String csvPath, int targetLineNum) throws IOException {
        try (BufferedReader br = new BufferedReader(new FileReader(csvPath))) {
            String currentLine;
            int currentLineIndex = 1;
            while ((currentLine = br.readLine()) != null) {
                if (currentLineIndex == targetLineNum) {
                    return currentLine;
                }
                currentLineIndex++;
            }
        }
        // 行号超出文件总行数时返回null,可自行调整为抛业务异常
        return null;
    }
}
  • 行号默认从1开始计数,可根据需求调整currentLineIndex的初始值
  • 读取到的目标行可直接作为字符串与你的输出结果完成拼接

工具类实现(适配大文件/复杂格式CSV)

推荐使用OpenCSV工具完成读取,无需自行处理CSV特殊格式,大文件下性能更优:
首先引入Maven依赖:

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.6</version>
</dependency>

读取示例代码:

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;

public class CsvLineReader {
    public static String[] readTargetLine(String csvPath, int targetLineNum) throws IOException {
        try (CSVReader reader = new CSVReader(new FileReader(csvPath))) {
            // 直接跳过前N行,无需逐行遍历计数
            reader.skip(targetLineNum - 1);
            return reader.readNext();
        }
    }
}
  • 大文件场景下skip方法性能远高于原生逐行遍历
  • 自动兼容包含逗号、引号、换行符的特殊CSV字段,避免原生读取出现格式解析错误
  • 返回的字段数组可按需取出对应内容,与输出结果完成拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:36:04