PHP :: Работа с каталогами
Практически все функции для работы с каталогами собраны в подразделе «Расширения для работы с файловой системой» -> «Функции для работы с каталогами». Но прежде, чем работать с каталогом, он должен быть создан. Сделать это можно при помощи функции mkdir(), которая в качестве обязательного аргумента принимает строку с путевым именем каталога, а в качестве необязательных аргументов может принимать режим доступа и логический аргумент, который разрешает или запрещает создание вложенных директорий. Режим доступа представляет собой восьмеричное число из трех цифр с ведущим нулем, где первая цифра задает право доступа для владельца, вторая – для группы, третья – для всех остальных. Отметим, что в системе Windows режим доступа игнорируется, а вот в UNIX определены следующие права доступа: 0 – доступ запрещен, 1 – доступ для запуска, 2 – доступ для записи, 3 – доступ для записи и запуска, 4 – доступ для чтения, 5 – доступ для чтения и запуска, 6 – доступ для чтения и записи, 7 – полный доступ. По умолчанию режим доступа имеет значение 0777, что означает самые широкие права. Использование данной функции, а также некоторых других, предназначенных для работы с каталогами, показано в примере №1.
<?php echo '-------- mkdir() -------- <br><br>'; //mkdir() - создаёт директорию. Возвращает true в случае успеха, иначе - false //rmdir() - удаляет указанную директорию и возвращает true|false mkdir('php_dir'); //Создали директорию в папке со скриптом echo '<br><br>'; echo '-------- opendir(), readdir(), closedir() -------- <br><br>'; //opendir() - возвращает дескриптор каталога в случае успеха, иначе - false //readdir() - возвращает имя следующего по порядку эл-та каталога, //иначе - false. Элементы возвращаются в том порядке, в котором они хранятся //в файловой системе. При этом следует иметь в виду, что каждый каталог //файловой системы имеет две виртуальные директории . и .., которые //представляют, соответственно, текущий и родительский каталоги и обычно //возвращаются readdir() первыми. //closedir() - освобождает дескриптор каталога. //Также посмотрите rewinddir() - сбрасывает дескриптор каталога, //scandir()- возвращает в случае успеха массив имен файлов, найденных в //указанной директории или false в случае ошибки, glob() - находит файловые //пути, совпадающие с заданным шаблоном и возвращает их в массиве //(или false в случае ошибки). fnmatch() - проверяет совпадение имени файла с //шаблоном и возвращает true|false //Для примера создадим в каталоге php_dir еще два каталога и два пустых файла mkdir('php_dir/dir_1'); mkdir('php_dir/dir_2'); //Опять же для примера, файлы создаем двумя разными способами touch('php_dir/file_1.txt'); fopen('php_dir/file_2.txt', 'w'); //Будем сохранять найденные файлы и папки в отдельные массивы $fls=array(); $drs=array(); if($dir_handle=opendir('php_dir')){ //Сканируем весь каталог while(($elem=readdir($dir_handle))!==false){ //Помещаем файлы в массив if(is_file('php_dir/'.$elem)){ $fls[]=$elem; //Помещаем каталоги в массив }else if(is_dir('php_dir/'.$elem)){ $drs[]=$elem; } } //Закроем дескриптор каталога после работы closedir($dir_handle); }else{ die('Извините, не удалось открыть каталог!'); } //Выведем имена всех найденных файлов на экран echo 'В каталоге присутствуют файлы: '.'<br>'; foreach($fls as $value ){ echo $value.'<br>'; } echo '<br>'; //Выведем имена всех вложенных директорий на экран echo 'Вложенные каталоги: '.'<br>'; foreach($drs as $value ){ echo $value.'<br>'; } echo '<br><br>'; echo '-------- getcwd() -------- <br><br>'; //getcwd() - возвращает имя текущего рабочего каталога, иначе - false //См. также chdir() - изменяет каталог и возвращает true|false //На локальной машине вывело C:\xampp\htdocs\test\php echo getcwd().'<br>'; chdir('php_dir'); //На локальной машине вывело C:\xampp\htdocs\test\php\php_dir echo getcwd(); echo '<br><br>'; ?>
Пример №1. Использование функций для работы с каталогами
Быстрый переход к другим страницам
- Редактирование содержимого файла в PHP
- Работа с каталогами в PHP
- Подключение внешних файлов в PHP
- Вернуться к оглавлению учебника