Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення

Видалення файлів і каталогів

Так само як spurt і mkdir створюють щось на диску, дві підпрограми це прибирають.

Підпрограма unlink видаляє файл:

spurt 'temp.txt', 'scratch data';
say 'temp.txt'.IO.e; # True

unlink 'temp.txt';
say 'temp.txt'.IO.e; # False

unlink видаляє названий файл. Як і інші підпрограми файлової системи, він має й форму методу для об’єкта шляху — 'temp.txt'.IO.unlink.

Видалення є негайним і остаточним: жодного смітника, з якого можна відновити, немає. Зверніть увагу, що після зникнення файлу перевіряти його наявність треба через .e (існування), а не через .f, бо перевірки типу .f та .d кидають виняток, коли шляху немає.

Підпрограма rmdir вилучає каталог, але лише порожній:

mkdir 'reports';
rmdir 'reports';
say 'reports'.IO.e; # False

Якщо каталог іще щось містить, rmdir нічого не вилучає й лишає його на місці. Тож, щоб видалити каталог із файлами, ви спершу спорожнюєте його, а потім вилучаєте:

mkdir 'reports';
spurt 'reports/jan.txt', 'January';
spurt 'reports/feb.txt', 'February';

.unlink for 'reports'.IO.dir;   # видалити кожен запис
rmdir 'reports';                # тепер каталог порожній
say 'reports'.IO.e;             # False

'reports'.IO.dir перелічує записи каталогу (попередня тема це охоплювала), а виклик .unlink для кожного з них їх вилучає. Щойно каталог спорожнів, rmdir може його прибрати. (Цей плаский цикл припускає, що каталог містить лише файли; дерево з вкладеними підкаталогами потребувало б спершу рекурсивно зайти в них.)

Практика

Виконайте 1 тест за змістом цієї теми.

Вправи

У цьому розділі 2 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.

  1. Видаліть файл
  2. Очистіть каталог

Навігація курсом

Розв’язання: Файл чи каталог?   |   Видаліть файл