0

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

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!
}

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

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

4

2 回答 2

4

就个人而言,我建议您重新考虑您的方法,但这就是您要寻找的:

    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!
    }

我不知道你想做什么,但如果我让你正确,你应该阅读更多关于序列化的内容

于 2012-08-05T12:44:18.880 回答
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;
}
于 2012-08-05T13:05:44.807 回答