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
相关产品推荐
相关产品推荐

