搜索已创建的文件

时间:2010-11-11 00:46:40

标签: c#

当我创建文件并向其附加其他信息时,我现在希望能够读取文本文件,然后显示文件中列出的生日月份。 我希望能够在生日那天获取信息。因此,如果我选择第11个月,我想通过按下按钮4来提取出生月数为11的所有数据条目。

这是我到目前为止所拥有的;

 private void close_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        writetext();
        reset();

    }
    public void writetext()
    {

        using (TextWriter writer = File.AppendText("filename.txt"))

        {
         writer.WriteLine("First name, {0} Lastname, {1} Phone,{2} Day of birth,{3} Month of Birth{4}", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox3.Text);
         MessageBox.Show(String.Format("First Name,{0} Lastname, {1} Phone,{2} Day of birth,{3} Month of Birth{4}", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox3.Text)); 
        }
        }
    public void reset()
    {
        textBox1.Text = "";
        textBox2.Text = "";
        textBox3.Text = "";
        textBox4.Text = "";
        maskedTextBox1.Text = "";
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Close(); 
     }

    private void button2_Click(object sender, EventArgs e)


    {
        readfile(); 


    }

    private void label7_Click(object sender, EventArgs e)
    {

    }

    private void button4_Click(object sender, EventArgs e)
    {

    }
    public void readfile()
    {
        string[] lines = File.ReadAllLines("filename.txt");
        label6.Text = String.Join(Environment.NewLine, lines);
    }
}






 }

2 个答案:

答案 0 :(得分:0)

请原谅我在这里使用vb.net语法,因为我已经习惯了它。翻译应该非常简单:

Dim rdr As New IO.StreamReader("filename.txt")
While rdr.Peek <> -1
   Dim strLine as String = rdr.ReadLine()
   If strLine.Contains("Birth Month,11") Then
      Label6.Text &= strLine
   End If
End While
rdr.Close()

希望有所帮助。

答案 1 :(得分:0)

与Geoffrey相同,但使用C#和linq语法:

您可以使用出生日期过滤文件内容,并以这种方式将其存储在新数组中:

string[] persons = File.ReadAllLines(Server.MapPath("filename.txt"));
IEnumerable<string> personsWithBirthday =
  from p in persons
    where p.Contains("1980-08-21")
      select p;
foreach (var person in personsWithBirthday)
 Response.Write(person);

我建议您定义标准日期格式,以便轻松获取符合搜索条件的所有人员。