Подтвердить что ты не робот

Fgets() и fread() - В чем разница?

Я понимаю различия между fgets() и fgetss(), но я не понимаю разницы между fgets() и fread(), может кто-то прояснить эту тему? Какой из них быстрее? Спасибо!

4b9b3361

Ответ 1

fgets читает строку - то есть она останавливается при символ новой строки.

fread читает необработанные данные - он остановится после указанного (или по умолчанию) количество байтов, независимо от любой новой строки, которая может быть или не быть.


Скорость не является основанием для использования одного над другим, поскольку эти две функции просто не делают то же самое:

  • Если вы хотите прочитать строку из текстового файла, используйте 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.