读取文本文件并将信息插入新对象

时间:2013-09-19 05:42:46

标签: c# file-io separator

所以我有一个文本文件,其中包含以下格式的信息,包括姓名,电子邮件和电话号码。

Bill Molan, Bill.Molan@gmail.com, 612-789-7538
Greg Hanson, Greg.Hanson@gmail.com, 651-368-4558
Zoe Hall, Zoe.Hall@gmail.com, 952-778-4322
Henry Sinn, Henry.Sinn@gmail.com, 651-788-9634
Brittany Hudson, Brittany.Hudson@gmail.com, 612-756-4486

当我的程序启动时,我想读取这个文件并将每一行变成一个新的Person(),我最终将其添加到列表中。我想读取每一行,然后使用逗号分隔每个字符串以放入Person()的构造函数,这是一个基本类:

public PersonEntry(string n, string e, string p)
{
    Name = n;
    Email = e;
    Phone = p;
}

我已经做了一些观察,我认为使用streamreader会用于读取文本文件,但我不确定从哪里开始。

3 个答案:

答案 0 :(得分:4)

您可以使用以下方法:

 

    string line;
    List listOfPersons=new List();

    // Read the file and display it line by line.
    System.IO.StreamReader file = 
        new System.IO.StreamReader(@"c:\yourFile.txt");
    while((line = file.ReadLine()) != null)
    {
        string[] words = line.Split(',');
        listOfPersons.Add(new Person(words[0],words[1],words[2]));
    }

    file.Close();

 

答案 1 :(得分:0)

您可以阅读以下所有行//假设所有行总是有3个值

var allLines  = File.ReadAllLines(path);
var listOfPersons = new List<Person>();
foreach(var line in allLines)
{
    var splittedLines = line.Split(new[] {","})
     if(splittedLines!=null && splittedLines.Any())
      {
          listOfPersons.Add( new Person {
                                           Name = splittedLines[0],
                                           Email = splittedLines .Length > 1 ?splittedLines[1]:null,
                                            Phone = splittedLines .Length > 2? splittedLines[2]:null,
                                         });
      }

}

此代码是必须检查的样本,如阵列长度等各种条件也请检查

答案 2 :(得分:0)

假设逗号永远不会出现在数据中: 使用StreamReader.ReadLine读取每行文本。对于每行文本,使用string.Split将行拆分为字符串数组,使用逗号作为拆分字符。现在你有一个包含3个字符串的数组,其中[0]是名称,[1]是电子邮件,[2]是电话。