PHP | Открытие, чтение, закрытие файлов
В этой уроке мы рассмотрим несколько функций, с помощью которых будем открывать, читать и закрывать файлы на сервере.
Функция PHP fopen()
Функция fopen() в PHP — это встроенная функция, которая используется для открытия файла или URL-адреса. В случае сбоя, она возвращает FALSE и выдаёт ошибку. Если вам нужно скрыть вывод ошибки добавьте символ '@' перед именем функции.
Синтаксис
Параметры
- filename : Обязательный параметр, определяющий файл.
- mode : Обязательный параметр, определяющий тип доступа к файлу или потоку.
Он может иметь следующие возможные значения:- «r»: Открывает файл только для чтения; помещает указатель в начало файла.
- «r+»: Окрывает файл для чтения и записи; помещяет указатель в начало файла.
- «w»: Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.
- «w+»: Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.
- «a»: Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
- «a+»: Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
- «x»: Создаёт и открывает только для записи. Он создает новый файл и возвращает FALSE и ошибку, если файл уже существует.
- «x+»: Создаёт и открывает для чтения и записи. Создает новый файл и возвращает FALSE и ошибку, если файл уже существует.
- «c»: Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличие от 'w'), и вызов к этой функции не вызывает ошибку (также как и в случае с 'x').
- «c+»: Открывает файл для чтения и записи; в остальном имеет то же поведение, что и 'c'.
- «e»: Установить флаг close-on-exec (закрыть при запуске) на открытый файловый дескриптор. Доступно только в PHP скомпилированном на системах поддерживающих POSIX.1-2008.
- include_path : Необязательный параметр, для которого установлено значение в '1' или TRUE, если вы хотите искать файл в include_path (например, php.ini).
- context : Необязательный параметр, который используется для установки поведения потока.
В этом уроке мы будем использовать текстовый файл mane.txt:
AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language
В следующем примере, ипользуя функцию fopen(), откроем файл "mane.txt" в режиме чтения:
Пример
Попробуй сам »<?php
$myfile = fopen("mane.txt", "r") or die("Невозможно открыть файл!");
echo fread($myfile,filesize("mane.txt"));
fclose($myfile);
?>
Конструкция or die("Невозможно открыть файл!") позволяет прекратить работу скрипта и вывесте некоторое сообщение об ошибке, если функция fopen не смогла открыть файл.
Чтение файла — fread()
Функция fread() считывает информацию из открытого файла.
Первый параметр fread() содержит имя файла для чтения, а второй параметр указывает максимальное количество байтов для чтения.
Следующий код PHP читает файл "mane.txt" до конца:
Закрытие файла — fclose()
Функция fclose() используется, чтобы закрыть открытый файл.
Синтаксис
bool fclose ( resource handle )
Функция закрывает файл, на который указывает handle.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Дескриптор должен указывать на файл, открытый ранее с помощью функции fopen() или fsockopen().
$myfile = fopen("mane.txt", "r");
// какой-то код для выполнения...
fclose($myfile);
?>
Примечание: Хорошая практика программирования — закрывать все файлы после того, как вы закончили с ними работать. Дело в том, что открытый файл на вашем сервере продолжает занимать ресурсы!
Однострочное чтение — fgets()
Функция fgets() используется для чтения одной строки из файла.
В приведенном ниже примере выводится первая строка файла mane.txt:
Пример
Попробуй сам »<?php
$myfile = fopen("mane.txt", "r") or die("Невозможно открыть файл!");
echo fgets($myfile);
fclose($myfile);
?>
Примечание: После вызова функции fgets() указатель файла переместился на следующую строку.
Проверка окончания файла — feof()
Функция feof() определяет, достигнут ли конец файла. Если в указанном дескрипторе, определяется окончание файла, возвращает True. В противном случае, False.
Функция feof() полезна для цикла работающего с данным неизвестной длины.
В приведенном ниже примере файл "mane.txt" считывается построчно, пока не будет достигнут конец файла:
Пример
Попробуй сам »<?php
$myfile = fopen("mane.txt", "r") or die("Невозможно открыть файл!");
while(!feof($myfile)) { // цикл завершится, при обнаружении конца файла
echo fgets($myfile) . "<br>"; // Вывести одну строку
}
?>
Чтение одного символа — fgetc()
Функция fgetc() используется для чтения одного символа из файла.
В приведенном ниже примере файл "mane.txt" считывается посимвольно, пока не будет достигнут конец файла:
Пример
Попробуй сам »<?php
$myfile = fopen("mane.txt", "r") or die("Невозможно открыть файл!");
while(!feof($myfile)) { // цикл завершится, при обнаружении конца файла
echo fgetc($myfile) . "<br>"; // Вывести один символ
}
?>
fgets() оканчивается символом s — string, а имя функции fgetc() оканчивается символом c — character.