Курс по 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. Изчистете директория

Навигация в курса

Решение: Файл или директория?   |   Изтрийте файл