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

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

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

Или

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

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

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

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

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

Из 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 } 

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

ReadAllLines

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

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

ReadLines

С помощью метода File.ReadLines вы можете начать перечисление коллекции строк перед возвратом всей коллекции.

Это полезно, если вам нужно обработать файл в кусках (не весь файл сразу).

Замечания, указанные в MSDN :

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

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

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

Давайте будем гением компьютера.