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.