Определить количество строк в текстовом файле
Есть ли простой способ программно определить количество строк в текстовом файле?
Серьезно запоздалое редактирование: если вы используете .NET 4.0 или новее
В File классе появился новый ReadLines метод, который лениво перечисляет строки, а не жадно читает их все в виде массива ReadAllLines . Так что теперь вы можете иметь как эффективность и краткость с:
Оригинальный ответ
Если вы не слишком обеспокоены эффективностью, вы можете просто написать:
Для более эффективного метода вы можете сделать:
Изменить: В ответ на вопросы об эффективности
Причина, по которой я сказал, что вторая была более эффективной, касалась использования памяти, а не обязательно скорости. Первый загружает все содержимое файла в массив, что означает, что он должен выделять как минимум столько же памяти, сколько размер файла. Вторая просто зацикливает одну строку за раз, поэтому ей никогда не нужно выделять больше памяти на одну строку за раз. Это не так важно для маленьких файлов, но для больших файлов это может быть проблемой (например, если вы попытаетесь найти число строк в файле 4 ГБ в 32-битной системе, например, там, где его просто недостаточно) адресное пространство пользовательского режима для выделения такого большого массива).
Что касается скорости, я бы не ожидал, что в ней будет много. Возможно, что ReadAllLines имеет некоторую внутреннюю оптимизацию, но, с другой стороны, возможно, ему придется выделить большой кусок памяти. Я предполагаю, что ReadAllLines может быть быстрее для небольших файлов, но значительно медленнее для больших файлов; хотя единственный способ определить это — измерить его с помощью секундомера или профилировщика кода.