26.11. PHP: Разные функции работы с файлами
Изучим следующие функции:
• chrnod(),
• fputs(),
• rewind(),
• ftell().
Если нужно изменить режим файла, используют функцию chmod(), которая позволяет менятьрежим на необходимый в данный момент. Ее синтаксис:
int chmod (string filename, int mode)
Изменяет режим файла, указанного в параметре filename, на режим, указанный параметром mode. Заметим, что mode не присваивает автоматически восьмеричное значение, для этого необходимо воспользоваться префиксом с нулем. Например:
chmod("/dir1/dir2/anyfile", 755); // десятичный, неверный режим
chmod("/dir1/dir2/anyfile", "u+rwx,go+rx"); // строка, неверный режим
chmod("/dir1/dir2/anyfile", 0755); // восьмеричный, верный режим
При правильном выполнении функция возвращает значение true, в противном случае — false.
ВНИМАНИЕ
Параметр mode не устанавливается автоматически в качестве восьмеричного значения, поэтому функция, содержащая строку параметров (такую, как не будет осуществлять работу должным образом.
Функция работает в РНР 3 и РНР 4.
Помимо того, что в РНР можно получать информацию из файла, можно также ее туда вносить. Если вам необходимо внести какую-либо строку в файл, соответствующий заданному указателю, используйте функцию fputs(), которая позволяет вносить любую строку символов в указанный файл. Содержимое этого файла может быть либо стерто, либо дополнено нужной строкой. Все это зависит от режима, определяемого функцией fopen() при определении указателя. Рассмотрим синтаксис функции fputs():
int fputs (int fp, string str[, int length])
На месте параметра str указывается строка, вносимая в fp — файловый указатель, определяется с учетом функции Параметр length отвечает за длину символов, которые можно вносить в указанный файл. Если ваша строка состоит из 10 символов, a length — 5, то в ваш файл с учетом размещения и, например, указателя будет внесено только 5 первых символов, остальные будут обрезаны. Параметр length опционален, т. е. при его отсутствии записывается вся строка str.
Рассмотрим пример работы функции fputs():
<?php
$fp = fopen("Z:\home\localhost\www\newname.txt", "w");
fputs($fp, "Работа над ошибками закончена!", 15);
fclose($fp);
readfile("Z:\home\localhost\www\newname.txt");
?>
Пример показывает, как работает функция при указании длины вносимой в файл newname.txt строки. Из всей приведенной строки в файл newname.txt будет внесено только 15 символов. На экране браузера будет выведено:
Ровно символов с учетом пробелов.
Теперь рассмотрим пример работы функции fputs() без указания параметра length:
<?php
$fp = fopen ("Z:\home\localhost\www\newname.txt", "w");
fputs($fp, "Работа над ошибками закончена!");
fclose($fp);
readfile("Z:\home\localhost\www\newname.txt");
?>
В данном случае в окно браузера будет
Работа над ошибками закончена!
Вся строка передана в указанный файл. Иногда нужно использовать функцию fputs() без указания параметра length. Все зависит от того, что именно надо получить в результате работы функции fputs().
Функция fputs() используется в РНР 3 и РНР 4.
При работе с содержимым файла происходит перемещение файлового указателя. Иногда в процессе работы возникает необходимость в установлении файлового указателя на начало файла. Для этого используют функцию rewind(). Ее синтаксис:
Функция rewind() устанавливает файловый указатель, заданный вместо параметра fp, на начало файла. При возникновении ошибки возвращается 0.
Файловый указатель должен быть действующим и указывать на файл, успешно открытый функцией fopen(). Например:
<?php
$fp = fopen("dir/dir1/dir2/yourfile", "w");
rewind($fp);
fclose($fp);
?>
Функция ftell() возвращает место файлового указателя, т. е. позицию указателя, установленного при помощи функции fopen(). Синтаксис функции ftell():
Функция ftell() возвращает позицию указателя в файле, на который ссылается файловый указатель, и устанавливает его на месте параметра fp. Таким образом, происходит смещение в потоке файла.
При возникновении ошибки функция ftell() возвращает false.
Файловый указатель должен быть действующим и указывать на файл, успешно открытый fopen() или popen().
Описанные функции ftell() и rewind() используются в РНР 3 и РНР 4.