базовый курс

ГРУППА КУРСА

Открытие файла. Указатель

Открытие файла

Для работы с файлом его нужно сначала открыть. Это делает функция fopen(). Она возвращает дескриптор, по которому происходит дальнейшее обращение к файлу.

fopen (путь к файлу, режим, include path, контекст)

Параметры:

путь к файлу - абсолютный или относительный путь к файлу

режим - определяет, какие действия можно будет производить с файлом

include paht - позволяет осуществлять поиск в папках include path. Для этого нужно указать значение '1' или true

контекст - позволяет указать ресурс контекста

Существуют следующие режимы:

'r' - только чтение. Указатель в начале.

'c' - только запись. Указатель в начале. Если файла нет то он создаётся.

'a' - только запись. Данные записываются в конец файла, положение указателя не учитывается. Если файла нет, то он создаётся.

'w' - только запись. При открытии файла, данные из него удаляются.

'x' - только запись. Создаётся новый файл. Если он уже существует, то возникает ошибка.

При указании любого режима можно добавить занак +. При этом файл становится доступен на чтение и на запись.

Откроем файл myfile.txt. Если вы его ещё не создавали, то нужно его создать. Добавьте в него небольшой текст из нескольких строк.

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
$file = fopen('myfile.txt', 'r+');

Указатель

Чтение и запись можно производить не только с начала или конца файла, но и с любого места. Для этого существует указатель. Функции чтения и записи начинают свою работу с того места, где находится указатель. При открытии файла, указатель находится в начале или в конце, в зависимости от режима. Затем он перемещается. При чтении указатель перемещается в конец той части данных, которая прочитана. А при записи он сдвигается в конец добавленных данных.

Есть несколько функций для работы с указателем.

Функция ftell() возвращает текущую позицию указателя.

ftell (файл)

Функция rewind() перемещает указатель в начало файла.

rewind (файл)

Функция fseek() сдвигает указатель.

fseek (файл, смещение, позиция)

Параметры:

файл - дескрептор файла

смещение - смещение в байтах. Может быть положительным или отрицательным

позиция - позиция, относительно которой указывается смещение. Принимает значения: SEEK_SET - от начала файла, SEEK_CUR - от текущего положения указателя, SEEK_END - от конца файла. По умолчанию установлено SEEK_SET

Для файлов, открытых в режимах 'a' и 'a+' данная функция не работает.

Функция feof() позволяет определить, что достигнут конец файла. Она возвращает true, если указатель находиться в конце файла.