PHP « количество строк в файле
Интересует такой вопрос - можно ли узнать количество строк в файле без его перечитывания.
Делаю обработку больших файлов и хочу сделать индикатор процесса, а для этого мне нужно знать конечную величину (
Перечитывать, хоть и впустую, файл считаю лишней задачей.
1 ответов
А чем Вас не устраивает размер файла в байтах? Какая разница, что на что делить: количество обработанных байтов на их общее количество или количество обработанных строк на их общее количество?
Получаете размер файла. Например, 700 байт. Далее в обработчике Вашем, который обрабатывает строки получаете длину строки, далее получаете количество байт в строке и вычисляете процент проделанной работы.
Пример:
Файл 700 байт.
Получаем первую строку 22 байта.
Вычисляем сколько процентов выполнено (22/700)*100=~3% (вроде так проценты считаются)
Получаем вторую строку 200 байт.
Вычисляем сколько выполнено (200/700)*100=~29% Или (222/700)*100=более точное число.
Смысл понятен? Это говорил автор выше, но его мысль была не развёрнута.
А вот такое не в коем случае не используйте. Файл помимо того, что полностью прочитается, так он ещё и в оперативке будет занимать размер больше чем сам файл весит.
Нельзя. Невозможно найти количество вхождений некоего элемента в неотсортированной последовательности кроме как полным сканированием (как точно подметил ErgallM с кубиками)
Символ перевода строки для ПК такой же символ как "Б" или "S".
Чтобы посчитать количество этих символов необходимо прочитать весь файл.