Я понимаю различия между fgets()
и fgetss()
но я не получаю разницу между fgets()
и fread()
, может кто-то прояснить эту тему? Какой из них быстрее? Благодаря!
fgets
читает строку – т.е. она останавливается на новой строке .
fread
считывает необработанные данные – он останавливается после указанного (или по умолчанию) количества байтов, независимо от любой новой строки, которая могла бы или отсутствовала бы.
Скорость не является основанием для использования одного над другим, поскольку эти две функции просто не делают то же самое:
fgets
fread
. fread () для двоичных данных и fread имеет ограничение на количество символов, которые вы можете прочитать
$source_file = fopen( $filename, "r" ) or die("Couldn't open $filename"); while (!feof($source_file)) { $buffer = fread($source_file, 5); var_dump($buffer); //return string with length 5 chars! }
Номер 5 – длина байтов.
Функция fgets считывает одну строку из текстового файла. Он читается так долго, пока не будет достигнут конец текущей строки (или конца файла). Поэтому, если вы хотите прочитать одну строку из текстового файла, вы должны использовать fgets. Функция fread не только читает до конца строки, но и до конца файла [например, fread ($ handle)] или столько же байтов, сколько указано в качестве параметра [например, fread ($ handle, 1024)]. Итак, если вы хотите прочитать полный файл, независимо от того, является ли он текстовым файлом со всеми содержащимися строками или произвольными необработанными данными из файла, вы должны использовать fread.