Raku kurss / Objekti, ievade/izvade un izņēmumi / Ievade un izvade
Failu un direktoriju dzēšana
Tāpat kā spurt un mkdir uz diska lietas
rada, divas rutīnas tās noņem.
Rutīna unlink dzēš failu:
spurt 'temp.txt', 'scratch data';
say 'temp.txt'.IO.e; # True
unlink 'temp.txt';
say 'temp.txt'.IO.e; # Falseunlink izdzēš nosaukto failu. Tāpat kā pārējām failu
sistēmas rutīnām, arī tai ir metodes forma uz ceļa objekta —
'temp.txt'.IO.unlink.
Dzēšana ir tūlītēja un neatgriezeniska: nav nekādas miskastes, no
kuras atgūt. Ievērojiet, ka pēc faila pazušanas tā esamība jāpārbauda ar
.e (esamība), nevis ar .f, jo tipa pārbaudes
.f un .d izmet izņēmumu, kad ceļa nav.
Rutīna rmdir noņem direktoriju, taču tikai
tukšu:
mkdir 'reports';
rmdir 'reports';
say 'reports'.IO.e; # FalseJa direktorijā vēl kaut kas ir, rmdir nenoņem neko un
atstāj to savā vietā. Tāpēc, lai izdzēstu direktoriju, kurā ir faili,
vispirms to iztukšojat un tikai tad noņemat:
mkdir 'reports';
spurt 'reports/jan.txt', 'January';
spurt 'reports/feb.txt', 'February';
.unlink for 'reports'.IO.dir; # delete every entry
rmdir 'reports'; # now the directory is empty
say 'reports'.IO.e; # False'reports'.IO.dir uzskaita direktorijas ierakstus
(iepriekšējais temats to aplūkoja), un .unlink izsaukums
katram tos noņem. Kad direktorija ir tukša, rmdir to var
aiznest. (Šis plakanais cikls pieņem, ka direktorijā ir tikai faili;
kokam ar ligzdotām apakšdirektorijām vispirms būtu tajās jāieiet
rekursīvi.)
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Vingrinājumi
Šajā sadaļā ir 2 vingrinājumi. Pirms ķerieties pie vingrinājumiem, izlasiet visus šīs sadaļas tematus.