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

Flutter Dart中CSV文件抛出FormatException问题求助

Flutter Dart 处理CSV时 FormatException 排查方案

核心问题分析

你遇到的FormatException大概率是CSV解析时类型转换失败(比如把非纯数字内容转int),或是行数据字段数量不匹配;再结合“时好时坏”的现象,说明数据里可能存在隐藏异常(比如空行、不可见字符、字段前后空格)。

具体排查步骤

  • 给解析逻辑加异常捕获,定位问题行
    在转换int的代码段添加try-catch,打印出错的行内容,直接锁定问题数据:

    // 示例代码,根据你的实际字段索引调整
    try {
      int num1 = int.parse(row[0].trim());
      int num2 = int.parse(row[1].trim());
      int num3 = int.parse(row[2].trim());
    } catch (e) {
      print('转换失败的行数据:$row,错误详情:$e');
    }
    
  • 清理CSV数据的潜在异常

    1. 跳过CSV里的空行(包括文件末尾的空行):
      if (row.isEmpty || row.every((e) => e.trim().isEmpty)) continue;
      
    2. 转换int前先去除字段前后的空格/不可见字符:
      int num1 = int.parse(row[0].trim());
      
    3. 校验每行字段数量是否严格为7个(3个int+4个string):
      if (row.length != 7) {
        print('字段数量不匹配的行:$row');
        continue;
      }
      
  • 确认CSV解析的基础配置
    确保解析用的分隔符和CSV实际一致(比如逗号/制表符),如果用csv第三方库,初始化时明确指定:

    final csvCodec = CsvCodec(fieldDelimiter: ','); // 根据你的CSV实际分隔符调整
    

    同时检查CSV文件编码是否为UTF-8,避免乱码导致解析异常。

  • 用固定数据验证逻辑稳定性
    手动构造一行标准测试数据(比如1,2,3,test1,test2,test3,test4)替换CSV内容,若能稳定运行,说明原CSV数据存在异常;若仍时好时坏,排查文件读取的异步问题(比如文件未完全加载就开始解析)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:21:02