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

Java如何仅读取CSV文件最后一行并获取其首列值?

读取CSV文件最后一行的第一列值

修正你现有代码的语法问题

你当前代码里的while循环条件存在语法错误,line = br.readLine() != null的括号位置有误,正确写法应为(line = br.readLine()) != null,否则会把readLine()结果与null比较的布尔值赋值给line,引发编译错误。

优化实现:无需存储所有行

你不需要把所有行存入数组,只需要在循环过程中持续更新保存最后一行的首列值即可,这种方式内存效率更高,尤其适合处理大文件。具体思路:

  • 初始化变量存储最后一行的首列值
  • 逐行读取文件,每次读取新行时,提取该行第一列并更新变量
  • 循环结束后,该变量即为最后一行的第一列值

完整代码示例

public String readPreviousEntryID() {
    String path = "csvs/cartEntries.csv";
    String lastFirstColumn = null; // 存储最后一行的第一列值

    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
        String line;
        // 修正括号位置,正确读取每一行
        while ((line = br.readLine()) != null) {
            // 分割行内容,注意:若CSV单元格包含逗号,简单分割会出错
            String[] values = line.split(",");
            // 避免空行或格式错误行导致数组越界
            if (values.length > 0) {
                lastFirstColumn = values[0].trim(); // 去除首尾空格
            }
        }
    } catch (FileNotFoundException e) {
        throw new RuntimeException("未找到指定文件: " + path, e);
    } catch (IOException e) {
        throw new RuntimeException("读取文件时发生错误", e);
    }

    return lastFirstColumn;
}

注意事项

  • 代码使用了try-with-resources语法,会自动关闭BufferedReader,避免资源泄漏,这是Java 7及以上版本的推荐写法。
  • 如果你的CSV存在单元格包含逗号的情况(比如"张三,李四",25),直接用split(",")会分割错误,这种场景建议使用专门的CSV解析库(如OpenCSV);若只是简单CSV场景,上述代码足够使用。
  • 增加了数组长度判断,避免空行或格式错误行触发ArrayIndexOutOfBoundsException。

内容的提问来源于stack exchange,提问作者bf-codes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:15:44