Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Ввод и вывод
Файловые дескрипторы
Читать или записывать файл целиком удобно, но иногда нужно пройти по файлу строка за строкой или держать файл открытым, многократно в него записывая. Для этого используется файловый дескриптор.
Самый простой способ читать файл построчно не требует даже явного
дескриптора: метод lines у объекта пути выдаёт строки по
одной, готовые для цикла for:
spurt 'words.txt', "one\ntwo\nthree\n";
for 'words.txt'.IO.lines -> $line {
say $line.uc;
}Каждая $line — это одна строка, без завершающего
перевода строки. Программа печатает:
ONE
TWO
THREEЧтобы писать в файл через дескриптор, откройте его с помощью
open и флага :w (запись), пользуйтесь методами
say или print дескриптора, а по окончании
закройте его через close:
my $fh = open 'out.txt', :w;
$fh.say('first line');
$fh.say('second line');
$fh.close;Закрытие дескриптора гарантирует, что всё записанное сброшено на диск. Построчное чтение, как выше, — это обычный способ работать с файлами, которые слишком велики, чтобы целиком затянуть их в память.
Практика
Пройдите 1 тест по содержанию этой темы.
Упражнения
В этом разделе 4 упражнения. Прежде чем приступать к практике, изучите все темы раздела.