Курс 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 (write), скористайтеся методами 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. Передайте дескриптор у функцію

Навігація курсом

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