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

  1. Пронумеруйте строки
  2. Подсчёт строк
  3. Запись через дескриптор
  4. Передайте дескриптор в функцию

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

Тест — Удаление файлов   |   Пронумеруйте строки