如何读取包含多行的文件文本并将其保存到类中?

时间:2014-03-30 16:29:47

标签: c#

我有一个类似的文本文件:

0 06 1.2.3.4 A B
0 09 1.2.3.4 B A
0 19 1.2.3.4 C B
0 25 1.2.3.4 E C
1 15 1.2.3.4 A -
1 26 1.2.3.4 F C
1 30 1.2.3.4 B A
1 36 1.2.3.4 D B

第一个圆柱是Minute,第二个是Second,第三个是IP,第四个是URL,final是Refer .. 我有一节课要保存:

class LogEntry
{
    private int minute;
    private int second;     
    private string ip;    
    private string url;
    public string Url    
    private string refer;    
}

我必须逐行阅读,删除空格并将其保存到Class LogEntry 我怎样才能做到这一点? :(             string path = ofd.FileName;             TextReader reader = new StreamReader(path);             string line = reader.ReadLine();

       // string alltext = reader.ReadToEnd();
        string[] a = line.Split(new Char[] { ' ' });

        string b = "";
        LogEntry entry = new LogEntry();
        string c = String.Empty;
        while ((c = reader.ReadLine()) != null)
        {
            foreach (string s in a)
            {
                if (s.Trim() != "")
                {


                    entry.Minute = Convert.ToInt32(b);
                    entry.Second = Convert.ToInt32(b);
                    entry.Ip = b;
                    entry.Url = b;
                    entry.Refer = b;

                    b += s + "\n";

                     list.Add(entry);
                }
            }
        }
 }

}

2 个答案:

答案 0 :(得分:1)

首先使用自动实现的属性而不是字段。

class LogEntry
{
    public int Minute { get; set; }
    public int Second { get; set; }
    public string IP { get; set; }
    public string Url { get; set; }
    public string Reference { get; set; }   
}

然后将File.ReadLines方法与LINQ一起使用并填充您的欲望:

 var logEntries = File.ReadLines("path")
            .Select(x => x.Split())
            .Select(x => new LogEntry
            {
                Minute = int.Parse(x[0]),
                Second = int.Parse(x[1]),
                IP = x[2],
                Url = x[3],
                Reference = x[4]
            }).ToList();

答案 1 :(得分:0)

好的,你有一个文本文件,里面有以下内容:

0 06 1.2.3.4 A B 0 09 1.2.3.4 B A 0 19 1.2.3.4 C B 0 25 1.2.3.4 E C 1 15 1.2.3.4 A - 1 26 1.2.3.4 F C 1 30 1.2.3.4 B A 1 36 1.2.3.4 D B

您需要的是一个包含您想要逐行读取的变量的类(分钟,秒,IP,URL,引用)。这些变量还必须具有get和set访问器或最常见的属性,这对于从文本文件保存到类是必不可少的。现在,您可以在此创建一个单独的代码,用于访问变量并保存class LogEntry中包含的变量。请注意,类中的变量不具有在类中存储时不可取的属性。