Робота з файлами, робота з каталогами

Працювати з цією функцією можна наступним чином:

/ Data "); // переходимо в / home / користувач / data (для Unix)

Щоб дізнатися поточний каталог можна скористатися функцією getcwd:

Для того щоб відкрити каталог використовується функція opendir. відкриває каталог, заданий параметром path:

Після того, як каталог відкритий, прочитати його можна функцією readdir:

Ця функція повертає імена елементів, що містяться в каталозі. Крім файлів і папок в каталогах знаходяться також елементи "." і "..". Перший елемент вказує на поточний каталог, а другий - на батьківський. Поточний каталог, до речі, можна відкрити, вказавши його ім'я як ".":

Після того, як робота з каталогом закінчена, його потрібно закрити. Закриття каталогу виконується за допомогою функції closedir:

Нижче наведено приклад, який здійснює читання і виведення файлів, що знаходяться в поточному каталозі.

Зауважимо, що ця функція повертає також "." і "..". Якщо цього робити не потрібно, то виключити ці значення можна наступним чином:

Як приклад на розглянуті функції, давайте створимо скрипт, що видаляє всі файли з каталогу c: / temp, до яких не було доступу протягом доби. Функція видалення файлів в цьому випадку викликається рекурсивно.

Створення каталогів проводиться за допомогою функції mkdir:

Ця функція створює каталог з ім'ям dirname і правами доступу mode. У разі невдачі повертає false. Права доступу задаються тільки для каталогів UNIX, оскільки в Windows цей аргумент ігнорується. Нижче наведено приклад створення каталогу test в директорії c: / temp.

Видалити каталог можна за допомогою функції rmdir:

Тепер видалимо щойно створений каталог / test:

Функція rmdir видаляє тільки порожні каталоги. Для того щоб видаляти непусті каталоги, давайте напишемо функцію і видалимо каталог c: / temp з усіма вкладеними папками і файлами:

При рекурсивном виклик функції не передавайте в якості аргументів записи "." і "..", які вказують на поточний і батьківський каталоги, так як в цьому випадку ви можете втратити ваші дані. Пропускайте ці записи явно за допомогою умовного оператора.