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

Эта статья фактически краткий справочник по функциям для работы с файлами. Описываемые функции редко кто использует, но это не значит, что они бесполезны. Напротив, они очень даже полезны… Но они описываются далеко не в каждом учебнике по PHP.
file_exists
Функция file_exists() проверяет, существует ли файл в локальной файловой системе. Если файл существует, то функция возвращает истину, а если нет, то ложь. Пример:
if (! file_exists("somefile.php") ) { echo "Файл не существует!; }
is_file
Эта функия по сути делает ту же работу, что и file_exists, но она более надежна, т.к. проверяет не только существование заданного файла, но и файл ли это (вдруг дирректория?), и можно ли производить с ним операции записи/чтения. Пример:
if (! is_file("somefile.php") ) {echo "Это неправильный файл, либо в него нельзя писать/читать"; }
else {echo "Все ok, это нормальный файл";}
filesize
Как можно догадаться из названия, эта функция нужна для определения размера файла (в локальной файловой системе). Она возвращает размер файла в байтах или возвращает FALSE, если возникла ошибка. Пример:
$fsize = filesize("somefile.txt");
echo "Размер файла $fsize";
is_writeable
Эта функция проверяет, существует ли заданный файл и можно ли в него писать. Пример:
if (is_writeable("somefile.txt") ) {echo "В этот файл можно писать";}
else {echo "Файла не существует, либо в него нельзя писать";}
is_readable
Эта функция позволяет убедиться, что файл доступен для чтения (если он существует).
if (is_readable("somefile.txt") ) {echo "Этот файл доступен для чтения";}
else {echo "Файла не существует, либо его нельзя прочитать с текущими правами";}
readfile
В большинстве скриптов, которые я видел, чтение из файла осуществлялось с помощью функции fgets либо fread. При этом нужно было перед этим открыть а после закрыть. Но есть функция readfile, которая позволяет сэкономить пару инструкций. Она читает содержимое файла и перенаправляет в стандартный поток вывода (обычно браузер). Пример:
readfile("somefile.txt");
Все содержимое файла будет выведено в файле.
basename
Функция выделяет имя файла из переданного ей полного пути. Пример:
$filename = basename("/usr/brutus/file.txt");
echo $filename; //будет выведено "file.txt"
getlastmod
Функция возвращает дату последней модификации файла, из которого эта функция вызывается. Пример:
echo "Последнее обновление: ".date("d.m.Y @ H:i:s", getlastmod() );
Работа с каталогами
is_dir
Функция проверяет, является ли заданный файл каталогом. Синтаксис:
bool is_dir (string filename);
Возвращает TRUE если это каталог и FALSE если это файл
dirname
Эта функция извлекает путь до полного имени файла, подобно функции basename. Синтаксис:
string dirname ($string path);
opendir
Функция открывает заданный каталог и возвращает его идентификатор для работы с ним подобно функции fopen. Синтаксис:
int opendir (string path);
closedir
Функция закрывает манипулятор каталога подобно функции fclose. Синтаксис:
void closedir (int resource_handle);
readdir
Функция возвращает очередной элемент каталога. Синтаксис:
string readdir (int resource_handle);
Пример:
$dp = opendir(‘somedir’);
while ($file = readdir($dp) ) {
echo $file."
";
}
closedir($dp);
rewinddir
Функция переводит указатель текущей позиции в начало каталога. К примеру функция readdir будет читать каталог с начала. Синтаксис:
void rewinddir (int resource_handle);
chdir
Функция осуществляет переход в заданный каталог. Синтаксис:
int chdir(string path);
mkdir
Функция аналогична однименной команде Unix – она создает каталог с заданным именем. Синтаксис:
int mkdir (string path, int mode);
Mode определяет разрешения, которые будут присвоены каталогу после создания.
Функции для работы с правами файла
Функции, которые будут описаны ниже, работают только в UNIX like системах.
filegroup
Эта функция возвращает идентификатор группы-владельца заданного файла. Синтаксис:
int filegroup (string filename);
fileperms
Функция возвращает разрешения (permissions) файла или FALSE в случае ошибки. Синтаксис:
int fileperm (string filename);
fileowner
Функция возвращает идентификатор владельца заданного файла. Синтаксис:
int fileowner (string filename);
chgrp
Функция пытается сменить группу-владельца данного файла. Синтаксис
int chgrp (string filename, mixed group);
chmod
Функция пытается изменить разрешения файла. Синтаксис:
int chmod (string filename, int permissions);
Замечание: параметр permissions должен состоять из четырех целых чисел, напрмер 0776.
chown
Функция chown пытается сменить владельца файла. Синтаксис:
int chown (string filename, mixed user);
stat
Эта функция возвращает массив с подробной информацией о файле. Синтаксис:
array stat (string filename);
Элементы, возвращаемые функцией:
0 – Устройство
1 – Индексный узел (inode)
2 – Режим защиты индексного угла
3 – Количество ссылок
4 – Идентификатор владельца
5 – Идентификатор группы владельца
6 – Тип устройства индексного узла
7 – Размер в байтах
8 – Время последнего обращения к файлу
9 – Время последней модификации файла
10 – Время последнего изменения
11 – Размер блока при выводе/вводе в файловой системе
12 – Количество выделенных блоков