如何在C#中读取一行.txt文件?

时间:2018-09-26 11:59:00

标签: c# passwords

我正在尝试建立一个具有登录功能和注册功能的密码数据库。通过将名称,姓氏,电子邮件和密码保存到一个.txt文件中,我可以使用注册功能。但是,我无法使程序读取一行,然后检查用户输入的密码是否与该密码匹配。 .txt文件。 到目前为止,这是我正在使用的工具。

//reading from file

int counter = 0;

private void Enter_btn_Click(object sender, EventArgs e)
{
    // makes a new file called password.txt
    StreamReader sr = new StreamReader("password.txt");

    string Line = "";
    //this reads all lines in the .txt file 
    while ((Line = sr.ReadLine())!=null)
    {
        //loops through each line.
        counter++;
        break;
    }
}

我希望while循环仅查看一行,然后输入用户名,然后再检查另一行并验证用户名是否正确。

counter++;

break;

我希望它经过第一行然后中断并到达第一行。我正在使用Form Application在Visual Studio中工作。

4 个答案:

答案 0 :(得分:1)

您可能想更改插入数据的方式。

尝试在值之间插入制表符(\ t),并以(\ n)结尾记录,以便您可以读取整个文件并使用String.Split('\ n'),这将为您提供单独的记录并再次进行拆分String.Split('\ t')进行单个记录以获取用户名和密码组合。.

然后您就可以使用逻辑来验证凭据

答案 1 :(得分:0)

您可以在不使用循环的情况下使用if语句,但必须手动执行。

例如:

//reading from file

int counter = 0;

private void Enter_btn_Click(object sender, EventArgs e)
{
    // makes a new file called password.txt
    StreamReader sr = new StreamReader("password.txt");

    string usr = "";
    string pass = "";

    pass = sr.ReadLine();
    if(pass != null)
    {
        //You get the password here now you can do the logic
    }
    else
    {
        //There is no line should throw an exception for instance
    }

    //Now lets get the username
    usr = sr.ReadLine();
    if(usr != null)
    {
        //You get the usr here
    }
    else
    {
        //There is no 2nd line should throw an exception for instance
    }

}

答案 2 :(得分:0)

您可以执行以下操作:

StreamReader sr = new StreamReader("password.txt");
string user;
while((user = sr.ReadLine()) != null)  
{  
    string password;
    if ((password = sr.ReadLine()) == null) {
        // TODO: Throw some exception for example Illegal State.
    }
    if (string.Equals(user, #user)) {
        if (string.Equals(password , #password)) {
            sr.Close();
            // SUCCESS
        } else {
            // WRONG PASSWORD
        }
    }
}
sr.Close();
// WRONG USER

答案 3 :(得分:0)

您可以先阅读第一行,然后再逐行遍历。

int counter = 0;

private void Enter_btn_Click(object sender, EventArgs e)
{
    // makes a new file called password.txt
    StreamReader sr = new StreamReader("password.txt");

    string Line = sr.ReadLine();
    //this reads all chars in the line 
    foreach (var ch in Line)
    {
        //loops through each char.
        counter++;
        break;
    }
}

如果只需要长度,则可以使用Line.length