Написать письмо авторам |
УЧЕБНИК PHP |
справочник функций <Оnline> |
Об учебнике |
Обновление |
Работа с каталогамиДля установки текущего каталога применяется функция chdir: int chdir ( string directory) Работать с этой функцией можно следующим образом:
Чтобы узнать текущий каталог можно воспользоваться функцией getcwd: string getcwd ( string path) Для того чтобы открыть каталог используется функция opendir, открывающая каталог, заданный параметром path: int opendir ( string path) После того, как каталог открыт, прочитать его можно функцией readdir: string readdir ( int dir) Эта функция возвращает имена элементов, содержащихся в каталоге. Кроме файлов и папок в каталогах находятся также элементы "." и "..". Первый элемент указывает на текущий каталог, а второй - на родительский. Текущий каталог, кстати, можно открыть, указав его имя как ".": $dir = opendir ("."); После того, как работа с каталогом закончена, его нужно закрыть. Закрытие каталога выполняется при помощи функции closedir: void closedir ($dir) Ниже приведен пример, осуществляющий чтение и вывод файлов, находящихся в текущем каталоге. <? $dir = opendir ("."); echo "Files:\n"; while ($file = readdir ($dir)) { echo "$file<br>"; } closedir ($dir); ?> Заметим, что эта функция возвращает также "." и "..". Если этого делать не нужно, то исключить эти значения можно следующим образом: <? $dir = opendir ("."); while ( $file = readdir ($dir)) { if (( $file != ".") && ($file != "..")) { echo "$file<br>"; } } closedir ($dir); ?> В качестве примера на рассмотренные функции, давайте создадим скрипт, удаляющий все файлы из каталога c:/temp, к которым не было доступа в течение суток. Функция удаления файлов в этом случае вызывается рекурсивно. <? function delTemporaryFiles ($directory) { $dir = opendir ($directory); while (( $file = readdir ($dir))) { if( is_file ($directory."/".$file)) { $acc_time = fileatime ($directory."/".$file); $time = time(); if (($time - $acc_time) > 24*60*60) { if ( unlink ($directory."/".$file)) { echo ("Файлы успешно удалены"); } } } else if ( is_dir ($directory."/".$file) && ($file != ".") && ($file != "..")) { delTemporaryFiles ($directory."/".$file); } } closedir ($dir); } delTemporaryFiles ("c:/temp"); ?> Создание каталогов производится с помощью функции mkdir: bool mkdir ( string dirname, int mode) Эта функция создает каталог с именем dirname и правами доступа mode. В случае неудачи возвращает false. Права доступа задаются только для каталогов UNIX, поскольку в Windows этот аргумент игнорируется. Ниже приведен пример создания каталога test в директории c:/temp. <? $flag = mkdir ("c:/temp/test", 0700); if($flag) { echo("Каталог успешно создан"); } else { echo("Ошибка создания каталога"); } ?> Удалить каталог можно с помощью функции rmdir: bool rmdir ( string dirname) Теперь удалим только что созданный каталог /test: <? $flag = rmdir ("c:/temp/test"); if($flag) { echo("Каталог успешно удален"); } else { echo("Ошибка удаления каталога"); } ?> Функция rmdir удаляет только пустые каталоги. Для того чтобы удалять непустые каталоги, давайте напишем функцию и удалим каталог c:/temp со всеми вложенными папками и файлами: <? function full_del_dir ($directory) { $dir = opendir($directory); while(($file = readdir($dir))) { if ( is_file ($directory."/".$file)) { unlink ($directory."/".$file); } else if ( is_dir ($directory."/".$file) && ($file != ".") && ($file != "..")) { full_del_dir ($directory."/".$file); } } closedir ($dir); rmdir ($directory); echo("Каталог успешно удален"); } full_del_dir ("c:/temp") ?> При рекурсивном вызове функции не передавайте в качестве аргументов записи "." и "..", указывающие на текущий и родительский каталоги, так как в этом случае вы можете потерять ваши данные. Пропускайте эти записи явным образом при помощи условного оператора.
|
Наверх |