fread

(PHP 4, PHP 5, PHP 7, PHP 8)

freadЧитает файл в бинарно-безопасном режиме: как последовательность байтов

Описание

fread(resource $stream, int $length): string|false

Функция fread() считывает заданное параметром length количество байтов из файлового указателя, на который ссылается поток stream. Чтение останавливается, как только выполнилось одно из следующих условий:

  • функция прочитала количество байтов, которое указали в параметре length
  • наступило состояние EOF — конец файла
  • при чтении сетевых потоков: функция получила доступ к пакету или истекло время ожидания сокета
  • если читается буферизованный поток, который не представляет обычный файл, функция выполняет не больше одного чтения данных, размер которых в байтах равен размеру порции (обычно это 8192); в зависимости от ранее буферизованных данных размер возвращаемых данных может быть больше размера одной порции данных.

Список параметров

stream

Ресурс (resource) указателя файловой системы, который обычно создают функцией fopen().

length

Параметр length указывает размер данных в байтах, которые считает функция.

Возвращаемые значения

Функция возвращает прочитанную строку или false, если возникла ошибка.

Примеры

Пример #1 Простой пример использования функции fread()

<?php

// Получаем содержимое файла в строку
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

?>

Пример #2 Пример побайтового чтения функцией fread()

Внимание

В системах, которые различают двоичные и текстовые файлы (например, ОС Windows), файл требуется открывать с включением флага «b» в параметр mode функции fopen().

<?php

$filename
= "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

?>

Пример #3 Примеры удалённого чтения функцией fread()

Внимание

При чтении не из обычного локального файла, а, например, из потоков, которые возвращаются при чтении удалённых файлов или функциями popen() и fsockopen(), чтение остановится после получения функцией доступа к пакету. То есть данные лучше собирать порциями, как показывают примеры в следующих параграфах.

<?php

$handle
= fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);

?>
<?php

$handle
= fopen("http://www.example.com/", "rb");

if (
FALSE === $handle) {
exit(
"Не удалось открыть поток по url адресу");
}

$contents = '';

while (!
feof($handle)) {
$contents .= fread($handle, 8192);
}

fclose($handle);

?>

Примечания

Замечание:

Когда требуется просто получить содержимое файла в виде строки, вызывают функцию file_get_contents(), поскольку её производительность выше, чем у кода в приведённых примерах.

Замечание:

Обратите внимание, функция fread() считывает данные с текущей позиции указателя файла. Пользуйтесь функцией ftell(), чтобы найти текущую позицию указателя и функцией rewind(), чтобы перемотать позицию указателя в начало.

Смотрите также

  • fwrite() - Записывает данные в файл в бинарно-безопасном режиме
  • fopen() - Открывает файл или URL-адрес
  • fsockopen() - Открывает соединение с сокетом интернет- или Unix-домена
  • popen() - Открывает файловый указатель процесса
  • fgets() - Получает строку из указателя на файл
  • fgetss() - Читает строку из файла и удаляет HTML-теги
  • fscanf() - Обрабатывает данные из файла по условиям формата
  • file() - Читает содержимое файла и помещает его в массив
  • fpassthru() - Выводит все оставшиеся данные из файлового указателя
  • fseek() - Перемещает позицию файлового указателя
  • ftell() - Возвращает текущую позицию указателя чтения/записи файла
  • rewind() - Отматывает позицию файлового указателя
  • unpack() - Распаковывает данные из бинарной строки