我有一个小项目。我正在做的是,从用户那里获取输入并将其保存在文本文件中。它的工作性很好。
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个不同的只读文本框中。
答案 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;
}