您好,我正在创建一个登录系统,该系统已将用户帐户存储到文本文件中。当用户输入用户名和密码时,程序应检查文本文件(如果用户退出),否则应不授予对系统的访问权限
我尝试使用StreamReader访问Path文件以匹配值,但无济于事
private void loginButton_Click(object sender, EventArgs e){
String user = usernameText.Text;
String pass = passText.Text;
StreamReader read = new StreamReader(@"profiles.txt");
if(user.Contains(File.ReadLines(@"profiles.txt").ToString()) && pass.Contains(File.ReadLines(@"profiles.txt").ToString()))
{
login.Show();
}
else
{
MessageBox.Show("The username or Password is Incorrect");
}
}
答案 0 :(得分:0)
尽管您声明了StreamReader
变量,但从未使用过它。您选择了File.ReadLines()
静态方法。但是,您正在检查用户和密码字符串是否都包含文件user.Contains(File.ReadLines(@"profiles.txt").ToString())
中的所有行。此外,调用ToString()
不会返回文件中的行,而是返回IEnumerable
返回的File.ReadLines()
object 的字符串表示形式。
为了建议另一种方法,我假设以下内容:文件的每一行对应一个用户和一个密码,使用相同的用户名和密码的用户不能超过一个,User
课程已按照 bolkay 在评论中的建议进行构建。
User user = null;
string line;
while ((line = read.ReadLine()) != null)
{
if (line.Contains(user) && line.Contains(password))
{
login.Show();
user = new User() { Username = user, Password = password };
break;
}
}
if (user == null) MessageBox.Show("The username or Password is Incorrect");
如果要使用File.ReadLines()
,请使用foreach而不是while:
foreach (string line in File.ReadLines("...")) { ... }
。