html.okpython.net
HTML и CSS для начинающих

PHP :: Работа с каталогами

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

PHP 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. Использование функций для работы с каталогами

Быстрый переход к другим страницам