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

Java读取CSV/文本文件如何不使用nextLine忽略换行符避免读取异常

问题解决方法

问题根源

你当前只将逗号,设置为Scanner的分隔符,换行符没有被纳入分隔规则,所以读取每行最后一个价格字段时,Scanner会把价格+换行符+下一行的编号当成连续的一段内容读取,才会出现字段错位的问题。

核心修正方案(无需使用nextLine)

修改Scanner的分隔符规则,同时匹配逗号和任意换行符即可,分隔符正则写成 ",|\\R",其中\\R可以匹配Windows的\r\n、Linux的\n等所有类型的换行符,兼容性更好。

修改后的完整代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Random;
import java.util.Scanner;

public class CsvReader {
    public static void main(String[] args) {
        try {
            File file = new File("...\\file.csv");
            FileReader printReader = new FileReader(file);
            BufferedReader buffReader = new BufferedReader(printReader);
            Scanner scanner = new Scanner(buffReader);
            
            // 关键修改:同时将逗号和换行符设为分隔符
            scanner.useDelimiter(",|\\R");
            // 读取第一行第一个值作为总数校验
            int max = Integer.parseInt(scanner.next());
            System.out.println(max + " 总条目数");
            
            // 初始化数组存储所有条目,每个条目存[编号,名称,价格]
            String[][] items = new String[max][3];
            for (int i = 0; i < max; i++) {
                items[i][0] = scanner.next(); // 编号
                items[i][1] = scanner.next(); // 名称
                items[i][2] = scanner.next(); // 价格
            }
            
            // 随机选一个条目
            Random rand = new Random();
            int randomIndex = rand.nextInt(max);
            // 选中的条目存入目标数组,按要求存储名称和价格
            String[] selectedItem = new String[]{items[randomIndex][1], items[randomIndex][2]};
            System.out.println("随机选中条目:名称=" + selectedItem[0] + ",价格=" + selectedItem[1]);
            
            buffReader.close();
            scanner.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

额外说明

  • 如果后续CSV字段可能存在带逗号的特殊内容,可以考虑直接用BufferedReader的readLine逐行读取后再按逗号拆分,逻辑会更清晰,也能避免特殊字符导致的解析问题。
  • 代码里把原命名Writer修改为scanner,避免和IO体系中的Writer类混淆,符合常规命名规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:00