我有一个项目,我必须将所有数据保存在文本文件中。
这些文件之一是 users.txt ,其中包含我所有的用户名
和密码。
我想做的是从 users.txt 中读取我的所有记录,并保存它们
在“用户列表”中,应在项目启动时完成此过程。
根据项目的过程(添加用户或删除用户),可以增加或减少列表。
此后,我想在项目关闭时将列表保存到相同的文件中
(或在关闭程序时)
我希望清楚了解该项目的想法。
这是我的github存储库,其中包含项目代码。
https://github.com/HeshamRashwanAM/Online-Book-Store-Project
用户: 是我创建的一个类,它具有字符串用户名,字符串密码和用户类型列表,与类名相同。
答案 0 :(得分:0)
您可能想编写一个小解析器。像这样将数据存储在文本文件中:
用户名:用户名 |密码:密码
使读取文件更加容易。要读取/写入文件,请使用以下命令:
static List<user> ReadUsers()
{
List<user> tmp_users = new List<user>();
var Lines = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "users.txt");
foreach (var line in Lines)
{
user user = new user();
String[] AccDetails = line.Split(new[] { "|" }, StringSplitOptions.None);
var username = AccDetails[0].Split(new[] { ":" }, StringSplitOptions.None);
var password = AccDetails[1].Split(new[] { ":" }, StringSplitOptions.None);
user.Username = username[1];
user.Password = password[1];
tmp_users.Add(user);
}
return tmp_users;
}
static void WriteUsers()
{
using (StreamWriter writer = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "users.txt", false))
{
foreach (user user in users)
{
writer.WriteLine("Username:" + user.Username + "|Password:" + user.Password);
}
}
}
编辑:如果要在打开/关闭fomr时触发此事件,请创建form.Load()/ form.Close()事件并将代码放在此处。 编辑2:Github存储库与执行用户管理的控制台应用程序:Repo
答案 1 :(得分:0)
如果在程序退出时等待保存,则可以删除那里的所有数据。相反,您应该同步并保存所有更改以确保完整性。您可以使用此库或检查其设计https://github.com/rsevil/Transactions 您想要做的是跟随事务,然后每次添加或删除时再做一次,永远不要等待!如果失败并尽快失败,别无选择! 伪代码:
transaction block {
create new users file in temp
move users to somewhere where you can roll back
move new file to current users file
}
随着时间的流逝,我会警告您一次,您会开始想“为什么我要折磨自己,为什么不使用sqlite之类的东西”?