В чем разница между File.ReadLines() и File.ReadAllLines()?

У меня есть запрос относительно File.ReadLines() и File.ReadAllLines(). В чем разница между их. У меня есть текстовый файл, где он содержит данные по строке. File.ReadAllLines() return array и с помощью File.ReadLines().ToArray(); также я могу получить тот же результат. Существует ли разница в производительности, связанная с этими методами?

string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();

или

string[] lines = File.ReadAllLines("C:\\mytxt.txt");

Ответ 1

есть ли разница в производительности, связанная с этими методами?

ДА есть разница

File.ReadAllLines() метод считывает весь файл за раз и возвращает массив [], поэтому требуется время при работе с большими размерами файлов и не рекомендуется, так как пользователь должен ждать до тех пор, пока не будет возвращен весь массив.

File.ReadLines() возвращает IEnumerable<string>, и он не читает весь файл за один раз, поэтому это действительно лучший вариант при работе с файлами большого размера.

От MSDN:

Методы ReadLines и ReadAllLines различаются следующим образом:

Когда вы используете ReadLines, вы можете начать перечислять коллекцию строк до возвращается вся коллекция; когда вы используете ReadAllLines, вы должны подождите, пока весь массив строк будет возвращен, прежде чем вы сможете получить доступ массив. Поэтому, когда вы работаете с очень большими файлами, ReadLines может быть более эффективным.

Пример 1: File.ReadAllLines()

string[] lines = File.ReadAllLines("C:\\mytxt.txt");

Пример 2: File.ReadLines()

foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{

   //Do something     

}

Ответ 2

File.ReadLines Возвращает метод IEnumerable<string>. Но File.ReadAllLines возвращает string[] Если вы читаете Большой файл, вам лучше использовать метод File.ReadLines. потому что он читает строку после строки из файла, а не читает весь файл в string[], который занимает много памяти. MSDN

Ответ 3

ReadAllLine

Открывает текстовый файл, считывает все строки файла и закрывает файл.

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

ReadLine

С помощью метода File.ReadLines мы читаем только одну строку.

Прочитайте файлы по очереди, если вам нужно обрабатывать файл не обязательно сразу.

Ниже представлена ​​подробная информация и демонстрация сравнения