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 に答える