从文本文件中检索数据

时间:2012-08-05 12:36:00

标签: c#

我有一个小项目。我正在做的是,从用户那里获取输入并将其保存在文本文件中。它的工作性很好。

private void btbsave_Click(object sender, EventArgs e)
{
    //Create Directory
    DirectoryInfo dd = new DirectoryInfo("C://Program Files/UserInfo");
    dd.Create();
    //To save the inputs
    StreamWriter sw = new StreamWriter("C://Program Files/UserInfo/UserInfo.txt", true);
    sw.WriteLine(txtname.Text);
    sw.WriteLine(txtage.Text);
    sw.Flush();
    sw.Close();
    //Conformation
    MessageBox.Show("Credentials Saved");
    //To Clear the text box after data saved
    txtname.Text = string.Empty;
    txtage.Text = string.Empty;
    //Focus
    txturl.Focus();
}

现在,我想根据输入检索数据。这部分对我来说很难,你能帮助我吗?

private void btnsearch_Click(object sender, EventArgs e)
{
     StreamReader sr = new StreamReader("C://Program Files/UserInfo/UserInfo.txt");
     String mystring = sr.ReadToEnd();
     //No idea how to retrive now plz help!
}

我项目的简要说明: 从 UserName Age 等用户那里获取一些值。将它们保存在文本文件中。

我需要根据用户 UserName 检索值。然后我应该 UserName 以及他的 Age 并将这些值插入到2个不同的只读文本框中。

2 个答案:

答案 0 :(得分:2)

我个人建议你重新考虑一下你的方法,但是,这就是你要找的东西:

    string sUserToSearch = "username";
    string sAgeToSearch = "22";

    string[] readText = File.ReadAllLines("UserInfo.txt");
    for (int i = 0; i < readText.count-2; i++) {
         if(readText[i] == sUserToSearch && readText[i+1] == sAgeToSearch);
             // Found it!
    }

我不知道你要做什么,但如果我纠正你,你应该在Serialization上阅读更多内容

答案 1 :(得分:1)

首先,您必须将数据分开,然后将它们插入文本文件

private void WriteUserToFile(User user, string path)
{
    using(var sw = new StreamWriter(path, true))
    {
        sw.WriteLine(user.Name + ";" + user.Age);
    }
}

现在你有一个这样的文件:

User1;10
User2;20
User3;45

现在您可以拆分数据了:

private IEnumerable<User> ReadUsersFromTextFile(string path)
{
    var users = new List<User>();

    using(var sr = new StringReader(path)
    {
        do
        {
            var strings = sr.ReadLine().split(';');                 
            var user = new User();
            user.Name = strings[0];
            user.Age = strings[1];
            users.Add(user);
        }while(!sr.EndOfStream)
    }

    return users;
}