代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

有没有办法从StreamReader中删除第一行

  •  2
  • leora Matt Lacey  · 技术社区  · 14 年前

    我有一个streamreader,它加载了一个csvfile,问题是在数据的顶部有一个额外的行,我想忽略它。

    CSVReader project 很好但是

     csv.GetFieldHeaders(); 
    

    总是看第一排。我没有进入CSVReader源代码并对其进行修改,而是认为在将它注入CSVReader之前,如果我能从streamreader本身“剥离”出第一行,可能会更容易。这可能吗?

    3 回复  |  直到 14 年前
        1
  •  12
  •   Hans Passant    14 年前

    在将SR中的一行传递给CSVReader构造函数之前,只需读取它。例如:

    using (var sr = new StreamReader("data.csv")) {
        sr.ReadLine();
        using (var csv = new CsvReader(sr, true)) {
            // etc..
        }
    }
    
        2
  •  3
  •   Jon Skeet    14 年前

    最简单的方法就是打电话 ReadLine() CSVReader .

        3
  •  2
  •   Tomas Petricek    14 年前

    StreamReader 是一个虚拟类,因此您可以创建一个继承类,将所有重要的功能委托给某个基础类 流阅读器 ,但它会跳过第一行文本(或者您可以从 TextReader 类型)。如果 CSVReader 接受 流阅读器 作为一个论据,这应该行得通。