Как загрузить большой файл с StreamReader в C #? - PullRequest
0 голосов
/ 17 октября 2019

Я использую StreamReader в C # для загрузки txt-файла в список, он отлично работает с файлом небольшого размера <= 20 Мб, но когда мне нужно загрузить большие файлы, prepossess останавливается и показывает мне это </p>

Ваше приложение вошло в состояние останова, но в настоящее время не выполняется код, который поддерживается выбранным механизмом отладки (например, выполняется только собственный код времени выполнения).

Я использую Visual Studio2017.

Это код

line = reader.ReadLine();

while (line != null)
{
    if (line.Contains("@"))
    {
        myEmails.Add(line);
        line = reader.ReadLine();
    }
}
reader.Close();

1 Ответ

3 голосов
/ 17 октября 2019

В вашем коде есть небольшая логическая ошибка.

В вашем цикле вы ищете строки, содержащие символ @. Если строка имеет один, он добавляет его к myEmails и получает следующую строку.

Однако, если строка не содержит @, , следующая строка никогда не будет прочитана поэтому вы вводите бесконечный цикл.

Вам просто нужно переместить line = reader.ReadLine(); за пределы вашего оператора if, и он всегда будет читать следующую строку независимо от того, содержит ли он символ @:

line = reader.ReadLine();
while (line != null)
{
    if (line.Contains("@"))
        myEmails.Add(line);

    line = reader.ReadLine();
}
reader.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...