belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

9.4. Работа с каталогами

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

<?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
echo getcwd().'<br>'; //На локальной машине вывело C:\xampp\htdocs\test\php
chdir('php_dir'); 
echo getcwd();  //На локальной машине вывело C:\xampp\htdocs\test\php\php_dir
echo '<br><br>'; 
?>

Пример 9.6. Использование функций для работы с каталогами

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх