В чем разница между 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 мы читаем только одну строку.
Прочитайте файлы по очереди, если вам нужно обрабатывать файл не обязательно сразу.
Ниже представлена подробная информация и демонстрация сравнения