Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення
Видалення файлів і каталогів
Так само як spurt і mkdir створюють щось на
диску, дві підпрограми це прибирають.
Підпрограма unlink видаляє файл:
spurt 'temp.txt', 'scratch data';
say 'temp.txt'.IO.e; # True
unlink 'temp.txt';
say 'temp.txt'.IO.e; # Falseunlink видаляє названий файл. Як і інші підпрограми
файлової системи, він має й форму методу для об’єкта шляху —
'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 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.