Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

Функции для работы с файлами

int fopen(string $filename, string $mode, bool $use_include_path=false)
Открывает файл с именем $filename в режиме $mode и возвращает дескриптор открытого файла. Если операция "провалилась", то, как это принято, fopen() возвращает false.
Необязательный параметр $use_include_path говорит PHP о том, что, если задано относительное имя файла, его следует искать также и в списке путей, используемом инструкциями include и require. Обычно этот параметр не используют.
Параметр $mode может принимать следующие значения:
r Файл открывается только для чтения. Если файла не существует, вызов регистрирует ошибку. После удачного открытия указатель файла устанавливается на его первый байт, т. е. на начало.
r+ Файл открывается одновременно на чтение и запись. Указатель текущей позиции устанавливается на его первый байт. Как и для режима r, если файла не существует, возвращается false.
w Создает новый пустой файл. Если на момент вызова уже был файл с таким именем, то он предварительно уничтожается.
w+ Аналогичен r+, но если файла изначально не существовало, создает его. После этого с файлом можно работать как в режиме чтения, так и записи. Если файл существовал до момента вызова, его содержимое удаляется.
a Открывает существующий файл в режиме записи, и при этом сдвигает указатель текущей позиции за последний байт файла. Этот режим полезен, если требуется что-то дописать в конец уже имеющегося файла. Вызов неуспешен в случае отсутствия файла.
a+ Открывает файл в режиме чтения и записи, указатель файла устанавливается на конец файла, при этом содержимое файла не уничтожается. Отличается от a тем, что если файла изначально не существовало, то он создается. Этот режим полезен, если вам нужно что-то дописать в файл (например, в журнал), но вы не знаете, создан ли уже такой файл.

В конце любой из строк r, w, a, r+, w+ и a+ может находиться еще один необязательный символ — b или t. Если указан b (или не указан вообще никакой), то файл открывается в режиме бинарного чтения/записи. Если же это t, то для файла устанавливается режим трансляции символа перевода строки, т. е. он воспринимается как текстовый.
int tmpfile()
Создает новый файл с уникальным именем и открывает его на чтение и запись. В дальнейшем вся работа должна вестись с возвращенным файловым дескриптором, потому что имя файла недоступно. Функцию следует использовать, если нужен временный файл, который при завершении программы хотелось бы удалить. Пространство, занимаемое временным файлом, автоматически освобождается при его закрытии и при завершении работы программы.
int fclose(int $fp)
Закрывает файл. Возвращает истину при успехе, false при «провале». PHP автоматически закрывает открытые файлы при завершении выполнения сценария. Однако хорошим тоном считается самостоятельно закрывать дескриптор сразу после завершения работы с файлом.
string fread(int $f, int $numbytes)
Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующим после прочитанного блока позициям (это происходит и для всех остальных функций чтения и записи). Если $numbytes больше, чем можно прочитать из файла (например, раньше достигается конец файла), возвращается то, что удалось считать.
int fwrite(int $f, string $st)
Записывает в файл $f все содержимое строки $st. Эта функция составляет пару для fread(), действуя «в обратном направлении». При работе с текстовыми файлами (то есть когда указан символ t в режиме открытия файла) все «\n» автоматически преобразуются в тот разделитель строк, который принят в вашей операционной системе.
string fgets(int $f, int $length)
Читает из файла одну строку, заканчивающуюся символом новой строки «\n». Этот символ также считывается и включается в результат. Если строка в файле занимает больше $length-1 байтов, то возвращаются только ее $length-1 символов. Функция полезна, если вы открыли файл и хотите "пройтись" по всем его строкам. Однако даже в этом случае лучше (и быстрее) будет воспользоваться функцией File(), которая рассматривается ниже.
int fputs(int $f, string $st)
Эта функция — синоним fwrite(). Отличие в том, что пару fread/fwrite принято использовать при работе с бинарными файлами, а пару fputs/fgets – с текстовыми (когда запись и чтение осуществляются построчно).
int feof(int $f)
Возвращает true, если достигнут конец файла.
int fseek(int $f, in $offset, int $whence = SEEK_SET)
Устанавливает указатель файла на байт со смещением $offset (от начала файла, от его конца или от текущей позиции, в зависимости от параметра $whence).
Параметр $whence, как уже упоминалось, задает, с какого места отсчитывается смещение
$offset. В PHP для этого существуют три константы, равные, соответственно, 0, 1 и 2:
• SEEK_SET — отсчитывает позицию относительно начала файла
• SEEK_CUR — отсчитывает позицию относительно текущей позиции
• SEEK_END — отсчитывает позицию относительно конца файла
В случае использования последних двух констант параметр $offset вполне может быть отрицательным (а при применении SEEK_END он будет отрицательным наверняка).
Как это ни странно, но в случае успешного завершения эта функция возвращает 0, а в случае неудачи -1. Должно быть, так сделано по аналогии с Си-эквивалентом функции.
int ftell(int $f)
Возвращает положение указателя файла. Вот так можно определить длину файла:
$f = fopen('x.txt', 'r');
fseek($f, 0, SEEK_END);
$size = ftell($f);
echo "Размер файла: $size байт";
fclose($f);
int filesize(string $filename)
Более простой способ определения размера файла.
bool file_exists(string $filename)
Возвращает true, если файл с именем $filename существует.
bool is_file(string $filename)
Возвращает true, если $filename — обычный файл.
bool is_dir(string $filename)
Возвращает true, если $filename — каталог.
string basename(string $path)
Выделяет основное имя файла из пути $path.
string dirname(string $path)
Возвращает имя каталога, выделенное из пути $path.
bool copy(string $src, string $dst)
Копирует файл с именем $src в файл с именем $dst. При этом, если файл $dst на момент вызова существовал, осуществляется его перезапись. Функция возвращает true, если копирование прошло успешно, а в случае провала — false.
bool rename(string $oldname, string $newname)
Переименовывает (или перемещает, что одно и то же) файл с именем $oldname в файл с именем $newname. Если файл $newname уже существует, регистрируется ошибка, и функция возвращает false.
bool unlink(string $filename)
Удаляет файл с именем $filename. В случае неудачи возвращает false, иначе — true.
array file(string $filename)
Считывает файл с именем $filename целиком и возвращает массив, каждый элемент которого соответствует строке в прочитанном файле. Функция работает очень быстро — гораздо быстрее, чем если бы мы использовали fopen() и читали файл по одной строке.
Неудобство этой функции состоит в том, что символы конца строки не вырезаются из строк файла, а также не транслируются, как это делается для текстовых файлов. Так что, каждый элемент массива иногда имеет смысл преобразовать с помощью функции rtrim().
Это не полный перечень функций для работы с файлами, однако, на первое время их более чем достаточно. Если вам потребовалось что-то сделать с файлом и вы не нашли в приведенном выше списке нужной функции, обратитесь к справочнику! Наверняка такая функция есть в PHP.

 
Предыдущая   На главную   Следующая