如何从.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++;
}
答案 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()
函数在每次调用时自动增加行数。