Я понимаю различия между fgets()
и fgetss()
, но я не понимаю разницы между fgets()
и fread()
, может кто-то прояснить эту тему? Какой из них быстрее? Спасибо!
Fgets() и fread() - В чем разница?
Ответ 1
fgets
читает строку - то есть она останавливается при символ новой строки.
fread
читает необработанные данные - он остановится после указанного (или по умолчанию) количество байтов, независимо от любой новой строки, которая может быть или не быть.
Скорость не является основанием для использования одного над другим, поскольку эти две функции просто не делают то же самое:
Ответ 2
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 - длина байтов.
Ответ 3
Функция fgets считывает одну строку из текстового файла. Он читается так долго, пока не будет достигнут конец текущей строки (или конца файла). Поэтому, если вы хотите прочитать одну строку из текстового файла, вы должны использовать fgets. Функция fread не только читает до конца строки, но и до конца файла (например, fread ($ handle)] или столько же байтов, сколько указано в параметре [например. fread ($ handle, 1024)]. Итак, если вы хотите прочитать полный файл, независимо от того, является ли он текстовым файлом со всеми содержащимися строками или произвольными необработанными данными из файла, вы должны использовать fread.