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

Эта статья фактически краткий справочник по функциям для работы с файлами. Описываемые функции редко кто использует, но это не значит, что они бесполезны. Напротив, они очень даже полезны… Но они описываются далеко не в каждом учебнике по 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 – Количество выделенных блоков


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