Работа с каталогами в PHP
Мы с Вами уже работали с файлами в PHP. И теперь я решил затронуть тему работы с каталогами в PHP. В этой статье Вы научитесь создавать каталоги в PHP, удалять их и считывать из них файлы и подкаталоги.
Начнём с самого простого: создание каталога в PHP:
<?php
mkdir("new_dir");
?>
После запуска этого скрипта у Вас будет создан пустой каталог "new_dir".
Удалить пустой каталог очень просто. Для этого используется функция rmdir().
<?php
rmdir("new_dir");
?>
А вот теперь перейдём к работе с содержимым каталогов через PHP. Здесь есть очень простые правила, которые необходимо соблюдать. Все эти правила очень логичны, и Вы их применяете, когда вручную просматриваете содержимое каталогов:
- Открыть каталог.
- Считать содержимое.
- Закрыть каталог.
Чтобы не мучить Вас в ожиданиях, сразу приведу код, который выводит имена файлов и категорий внутри заданного каталога:
<?php
$dir = opendir("images");
while (($f = readdir($dir)) !== false)
echo $f."<br />";
closedir($dir);
?>
В результате Вы увидите список всех файлов и каталогов внутри каталога "images". Также Вы увидите два интересных имени "." и "..". Первый означает "текущий каталог", а ".." - родительский.
Теперь подробно о функциях, используемых в этом примере:
- Функция opendir(string $path) - открывает каталог, находящийся по пути $path, а также возвращает дескриптор, необходимый для работы с этим каталогом.
- Функция readdir(resource $dir) - считывает текущий элемент в каталоге dir. Текущий элемент задаётся указателем, который сдвигается при каждом вызове. Поэтому получается, что каждый раз эта функция возвращает новый элемент из каталога. Когда все элементы закончились, то функция readdir() возвращает false.
- Функция closedir(resource $dir) - закрывает каталог dir.
Это все самые важные функции для работы с каталогами в PHP. Однако, хочется добавить ещё одну очень важную деталь по поводу функции rmdir(), которая удаляет каталог. Если Вы внимательно читали, то я написал, что эта функция удаляет "пустой каталог", то есть в котором нет ни одного файла и каталога (кроме "." и ".."). Другими словами, если в каталоге будет хотя бы один файл, то функция rmdir() не сработает. Вот как решить эту проблему Вы узнаете в следующей статье, поэтому подписывайтесь на обновления, чтобы не пропустить её появление.
-
- Михаил Русаков
Комментарии (3):
Михаил, а более подробные применения этих каталогов можно узнать? например хранения изображения пользователем можно?
Ответить
Можно создавать отдельные папки даже для каждого пользователя и хранить там все его файлы: музыку, фотографии, видео, какие-нибудь текстовые файлы.
Ответить
а можно при выводе всех файлов из каталога скрыть некоторые из них? просто когда я вывожу файлы, у меня в небольшое неприятное дополнение выводятся и материнские папки в виде .. или . и эти точки сильно мешают.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.