PHP :: Работа с каталогами
Практически все функции для работы с каталогами собраны в подразделе «Расширения для работы с файловой системой» -> «Функции для работы с каталогами». Но прежде, чем работать с каталогом, он должен быть создан. Сделать это можно при помощи функции mkdir(), которая в качестве обязательного аргумента принимает строку с путевым именем каталога, а в качестве необязательных аргументов может принимать режим доступа и логический аргумент, который разрешает или запрещает создание вложенных директорий. Режим доступа представляет собой восьмеричное число из трех цифр с ведущим нулем, где первая цифра задает право доступа для владельца, вторая – для группы, третья – для всех остальных. Отметим, что в системе Windows режим доступа игнорируется, а вот в UNIX определены следующие права доступа: 0 – доступ запрещен, 1 – доступ для запуска, 2 – доступ для записи, 3 – доступ для записи и запуска, 4 – доступ для чтения, 5 – доступ для чтения и запуска, 6 – доступ для чтения и записи, 7 – полный доступ. По умолчанию режим доступа имеет значение 0777, что означает самые широкие права. Использование данной функции, а также некоторых других, предназначенных для работы с каталогами, показано в примере №1.
htmlCodes
<?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
- Вернуться к оглавлению учебника