Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/88: Рейтинг темы: голосов - 88, средняя оценка - 4.95
8 / 7 / 1
Регистрация: 08.11.2014
Сообщений: 26
1

System.IO Как определить конец файла?

08.02.2018, 11:34. Показов 16634. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу программу которая симулирует авторизацию(логин\пароль, правильно не правильно). И столкнулся с такой проблемой что не знаю как определить конец файла, так как программа считывает комбинации построчно. EndOfStream как я понял просто прочитывает файл до конца. В интернете находил только через бинарный ридер. Проблема в методе Access. Подскажите как реализовать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace Lesson2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Программа создана для дз2 , выбирете одну из программ.");
            Console.WriteLine("1. Симуляция логина и пароля, авторизация");
            var variable = Convert.ToInt32(Console.ReadLine());
            if (variable == 1)
            {
                LoginTest();
            }
        }
        static void LoginTest() //метод подпрограммы тест
        {
            string login, password;
            Console.WriteLine("Для входа в систему введите логин и пароль. Для выхода в главное меню исполльзуйте комбинацию back\back");
            while (true)
            {
                Console.Write("Login: ");
                login = Console.ReadLine();
                Console.Write("Password: ");
                password = Console.ReadLine();
                if (Access(login, password))
                {
                    Console.WriteLine("Доступ разрешён");
                    break;
                }
                else
                {
                    Console.WriteLine("Доступ запрещён, попробуйте ещ раз");
                }
            }
            Console.ReadKey();
        }
        public static bool Access(string login, string password) //метод проверки
        {
            string loginCheck, passwordCheck; //переменные для проверки авторизации
            //создаем файл для логинов и записываем в него два логина построчно
            FileStream loginStream = new FileStream("loginFile.txt",FileMode.OpenOrCreate); //файловый поток
            StreamWriter loginWriter = new StreamWriter(loginStream);//файловый писатель
            StreamReader loginReader = new StreamReader(loginStream);//файловый читатель
            loginWriter.WriteLine("log");
            loginWriter.WriteLine("admin");
            //создаем файл для паролей и записываем в него два пароля построчно
            FileStream passwordStream = new FileStream("passwordFile", FileMode.Create);//файловый поток
            StreamWriter passwordWriter = new StreamWriter(passwordStream);//файловый писатель
            StreamReader passwordReader = new StreamReader(passwordStream);
            passwordWriter.WriteLine("pas");
            passwordWriter.WriteLine("admini");
            //Проверка правильности комбинации логин пароль
            while (true){
                if (passwordReader.EndOfStream)
                {
                    return false;
                }
                loginCheck = loginReader.ReadLine();
                passwordCheck = passwordReader.ReadLine();
                if (loginCheck == login && passwordCheck == login)
                {
                    return true;
                }
                if (loginCheck != login || passwordCheck != password)
                {
                    continue;
                }
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2018, 11:34
Ответы с готовыми решениями:

Как добавить в конец каждой строки одного файла соответствующую строку из другого файла
Как добавить в конец каждой строки одного файла соответствующую строку из другого файла?

Как записать строку не в конец файла
Мне необходимо записать строку не в конец файла, а допустим в какую-то произвольную строку. Как это...

Как реализовать запись в конец файла?
Добрый день. Пытаюсь реализовать запись в текстовый файл с использованием StreamWriter....

Как определить конец потока BinaryReader
stRead = new FileStream(somePath, FileMode.Open, FileAccess.Read); br = new BinaryReader(stRead);...

3
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
08.02.2018, 11:40 2
Лучший ответ Сообщение было отмечено CheGivaro как решение

Решение

StreamReader вернёт null когда достигнет конца файла, на его и нужно проверять

Добавлено через 2 минуты
можно ещё использовать метод Peek() он вернёт -1 когда нет доступных для чтения символов
1
8 / 7 / 1
Регистрация: 08.11.2014
Сообщений: 26
08.02.2018, 11:48  [ТС] 3
То есть в моём случае paswordReader.ReadLine() или loginRead.ReadLine() Достигнут конца(пустой строки) он запишет в переменную(вернёт) значение null я правильно понял?
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
08.02.2018, 11:55 4
Лучший ответ Сообщение было отмечено CheGivaro как решение

Решение

CheGivaro, верно

либо можно вместо:
C#
1
2
3
4
if (passwordReader.EndOfStream)
                {
                    return false;
                }
написать так:
C#
1
2
3
4
if (passwordReader.Peek() == -1)
                {
                    return false;
                }
1
08.02.2018, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2018, 11:55
Помогаю со студенческими работами здесь

Как определить конец строки в файле?
class Program { static void Main(string args) { ...

Как определить конец строки в BinaryWriter
Не нашел на msdn,как в BinaryWriter определить конец файла? Я так понимаю с помощью конструкции...

Как записать текст в конец файла *.txt
Люди подскажите. В файле setting.txt уже вписан текст, подскажите как с dict записать текст не...

Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru