如何从跳过第一行的.txt文件中读取数据

时间:2019-05-06 14:38:45

标签: c#

如何从.txt文件中读取数据? 我的数据文件看起来像这样http://prntscr.com/nl4c3l 我找到了OpenFileDialog类,并使用下面的代码成功读取了第一行,但我不知道如何跳过第一行并从第二行开始读取。

StreamReader sr = new StreamReader(openFileDialog.FileName);
string line = sr.ReadLine();
string[] names = line.Split(',');
int counter = 0;

foreach (String s in names)
{
    DataAttribute attribute;
    if (counter!=names.Length-1)
    {
        attribute = new DataAttribute(s);
    }
    else
    {
        attribute = new DataDecision(s);
    }
    counter++;
}

4 个答案:

答案 0 :(得分:1)

只需使用ReadAllLines和Skip方法,例如:

 var AllExceptFirstLine = File.ReadAllLines(FileName).Skip(1).ToList();

答案 1 :(得分:1)

使用CSV Helper这样的外部库将有助于将数据解析为可用对象。

对于不需要映射的简单Csv(csv标头匹配属性,不需要复杂类型或转换),您可以简单地:

public class Weather {
    public string Outlook {get;set;}
    public string Temperature{get;set;}
    public string Humidity{get;set;}
    public string Wind{get;set;}
    public string Decision{get;set;}
}

void Main()
{
    var records = new List<Weather>();
    using (var reader = new StreamReader("path\\to\\file.csv"))
    using (var csv = new CsvReader(reader))
    {
        var records = csv.GetRecords<Weather>();
    }
}

答案 2 :(得分:0)

您可以尝试使用 Linq Skip;提供您想要的自定义类Weather

数组
using System.Linq;

...

Weather[] records = File
  .ReadLines(openFileDialog.FileName)
  .Skip(1)                          // Skip 1st line
  .Select(line => line.Split(','))  // Convert each line starting from the 2nd
  .Select(items => new Weather() {  // into custom Weather classes
     Outlook = items[0],            //TODO: add necessary conversions if required 
     Temperature = items[1], 
     Humidity = items[2], 
     Wind = items[3], 
     Decision = items[4]
   })
  .ToArray();                       // organized as an array

答案 3 :(得分:0)

您可以重复line = sr.ReadLine();ReadLine()函数在每次调用时自动增加行数。