首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 讀取文件夾下所有文本文件解析時 IndexOutOfRange 異常排查

     編輯:程式設計綜合問答

異常原因

`parts[1]` 或 `parts[3]` 越界,因某些行分割後列數不足 (空行、分隔符缺失、格式錯誤)。

排查步驟

  1. 添加防禦判斷:
    
    var parts = line.Split('\t');
    if (parts.Length < 4) continue; // 或記錄錯誤日志
    
  2. 調試輸出問題行:
    
    if (parts.Length < 4) {
        Console.WriteLine($"Bad line: {line}");
        continue;
    }
    
  3. 檢查文件編碼是否一致 (UTF-8 vs GBK) 導致讀取亂碼分割異常。

健壯寫法


var query = File.ReadAllLines(file, Encoding.GetEncoding("GB2312")) // 指定編碼
    .Skip(2)
    .Select(l => l.Split('\t'))
    .Where(p => p.Length >= 4)
    .GroupBy(p => p[1])
    .Select((g,i) => $"{i+1}\t{g.Key}\t{g.Sum(x => int.Parse(x[3]))}");
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved