根据要求,我们将用户,密码和个人资料图片存储在.txt文件中。用户可以被重定向到配置文件修改页面,在那里他们可以更改其密码和/或密码图片。
当用户点击“确定”时,我需要替换.txt文件中的密码和/或个人资料图片名称。
users.txt文件的布局如下:
mike mike Avatar1
jessica123 123jessica Avatar4
mohd MoHd Avatar3
xiao AxiaoA Avatar2
anna abcANNAabc Avatar1
经过一些研究后,我尝试过使用:
userFilePath = userFilePath.Replace(Session["password"].ToString(),
passwordTextBox.Text);
原始密码存储在登录中,通过我用来查找文件中原始文本的会话变量。
但这不起作用。我对c#很新。任何帮助将不胜感激。
答案 0 :(得分:2)
小心你必须只更改相关的行,许多用户可能有相同的passeword,所以你必须逐行阅读文件,识别相关的登录,当然不能替换任何东西,因为登录或头像也可以与密码相同的值,但使用新信息重新创建行,并在使用新的整个文本值保存文件后。
只是建议满足这些需求,最好使用关系数据库。
答案 1 :(得分:1)
除了将信息存储在纯文本文件中并以明文形式保存密码之外,其他人已经提到这是一个坏主意,我认为最好在文件级别上取消直接字符串修改。最好在(对象列表)中抽象出来并修改对象并将其保存回磁盘。如果您仍想使用纯文本文件而不重新发明轮子,则可以使用名为FileHelpers的库轻松完成此操作。
另外要考虑的是,如果你坚持将其保留在文本文件中,那就是切换到更好的结构化文本文件,如JSON或XML格式。您不再需要使用上面提到的库,因为.NET已经为两者提供了de / serializers。
答案 2 :(得分:0)
如果可能的话,你应该对你的问题提出意见,不要这样做。
如果由于某种原因无法实现,那么这里就是一个开始的地方。您希望在加载阶段将整个文件从文件系统加载到内存中,通常是在应用程序启动时,或者首先需要数据。
一旦数据在内存中的某个结构中,您就可以像改变C#中的任何对象一样进行更改。
完成对内存的更改后,您可以将整个内容写回文件,覆盖旧文件。
所以你的问题非常大,有一个问题是如何从文件中读取数据?如何在内存中创建数据结构来保存这组特定的数据?你如何将数据写回文件?我建议按顺序一次一个地工作。
哦,如果你不能拥有数据库,但你可以改变文件格式,将其切换为XML或JSON,将文件从文件转移到内存,然后回到文件将会更容易。