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

