#8. 4 php Двоичное чтение файла: fread
Primary tabs
Читать содержимое файла необязательно по строкам или символам. Данные из файла могут быть прочитаны в любом необходимом объеме при помощи функции fread
. Функция fgets
рассматривает файлы как текстовые, а функция fread
рассматривает их как двоичные, не обрабатывая специальным образом концы строк и не выполняя никаких других преобразований данных -- файл считается просто последовательностью байт. Синтаксис функции fread
приведен ниже.
fread(resource handle, int length) |
Функция считывает до length
байт из файла, заданного своим дескриптором handle
. Чтение прекращается, если достигнут конец файла, или если считано заданное количество байт.
В операционной системе Windows для использования функции fread
файл должен быть открыт в двоичном режиме ('rb'
). Так как добавление режима 'b'
не имеет негативного эффекта в других операционных системах, то имеет смысл использовать его всегда в целях совместимости:
<?php $handle = fopen("file.txt", "rb"); ....
При помощи fread
можно считать весь файл целиком в одну строку. Для определения фактического размера файла используется функция filesize
:
<?php $handle = fopen("file.txt", "rb"); $text = fread($handle, filesize("file.txt")); ...
После выполнения этого кода файл будет считан в переменную $text
. Если при выполнении возникнет какая-либо ошибка, то переменная будет содержать пустую строку. Для преобразования символов концов строк в теги <BR>
используется функция str_replace
:
<?php $handle = fopen("file.txt", "rb"); $text = fread($handle, filesize("file.txt")); $br_text = str_replace("\n", "<BR>", $text); ...
Все, что остается сделать после этого -- вывести преобразованный текст при помощи функции echo
и закрыть файл, что и продемонстрировано в следующем примере.
Пример 1. Чтение двоичного файла
<HTML> <HEAD> <TITLE>Чтение файла при помощи fread</TITLE> </HEAD> <BODY> <CENTER> <H1> Чтение файла при помощи fread </H1> <?php $handle = fopen("file.txt", "rb"); $text = fread($handle, filesize("file.txt")); $br_text = str_replace("\n", "<BR>", $text); echo $br_text; fclose($handle); ?> </CENTER> </BODY> </HTML>
Результат выполнения примера:
- Log in to post comments
- 438 reads