Как мне прочитать одну строку для файла .txt в C #? - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать базу паролей с функцией входа и регистрации.Я получил возможность работать с функцией регистрации, сохранив имя, фамилию, адрес электронной почты и пароль в текстовом файле. Однако я не могу заставить программу прочитать одну строку, а затем проверить, соответствует ли введенный пользователем пароль, находящийся в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;

Я хочу, чтобы это проходило через первую строку, а затем разрыв и эту первую строку.Я работаю в визуальной студии, используя форму заявки.

Ответы [ 4 ]

0 голосов
/ 26 сентября 2018

Возможно, вы захотите изменить способ вставки данных.

Попробуйте вставить вкладку (\ t) между значениями и завершить запись с помощью (\ n), чтобы вы могли прочитать весь файл и использовать String.Split ('\ n'), который даст вам индивидуальную записьи снова разделить одну запись по String.Split ('\ t'), чтобы получить комбинации имени пользователя и пароля.

Тогда у вас может быть логика для проверки учетных данных

0 голосов
/ 26 сентября 2018

Вы можете сделать что-то вроде этого:

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
0 голосов
/ 26 сентября 2018

Вы можете прочитать первую строку, а затем перебрать ее одну за другой.

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.

0 голосов
/ 26 сентября 2018

Вы можете использовать операторы 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
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...