Курс по 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 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.