Skip to main content

file

Сырое чтение и запись файлов в собственном каталоге плагина. file читает и пишет обычные файлы — байтовую строку целиком, без разбора формата. Для структурированных данных (таблиц) есть store/datafile; file для всего остального: csv-экспорт, готовый json, любой текстовый или бинарный формат, который плагин собирает сам.

Песочница

Все имена — только внутри plugin.data_dir(), той же папки, куда пишут db.open() и store. Подпапок нет — name не может содержать /, \ или что-то похожее на путь. Имя — это stem или stem.ext:
  • stem: буквы, цифры, _, -
  • .ext — необязательно, ровно одна точка на всё имя, только буквы и цифры
  • максимум 64 символа
Валидно: report.csv, export_2026.json, state. Невалидно: ../evil.txt, sub/dir.txt, a.b.c, .hidden, hidden..

Предел размера

Одно чтение или одна запись/дозапись — не больше 4 МиБ. Больше — nil и причина, ещё до того, как файл открыт: частично записанного файла при отказе не остаётся.

file.read

Читает содержимое файла целиком.

Аргументы

Возвращает

Пример

Отсутствие файла — тоже ошибка здесь (nil, "cannot open ..."), в отличие от file.size, где отсутствие файла — просто nil без причины.

Смотри также

file.write

Перезаписывает файл целиком (или создаёт его).

Аргументы

Возвращает

Пример

Для дозаписи в конец существующего файла — file.append.

Смотри также

file.append

Дописывает в конец файла, не трогая то, что уже было (или создаёт его).

Аргументы

Возвращает

Пример

Предел 4 МиБ — на один вызов, не на итоговый размер файла: у file.append нет ограничения на то, насколько большим станет файл со временем. Для самоограничивающегося лога с ротацией по дням — log.write.

file.exists

Проверяет, есть ли файл в каталоге плагина.

Аргументы

Возвращает

Пример

file.remove

Удаляет файл из каталога плагина.

Аргументы

Возвращает

Пример

file.size

Возвращает размер файла в байтах.

Аргументы

Возвращает

Пример

Смотри также

file.list

Возвращает имена всех файлов верхнего уровня в каталоге плагина.

Возвращает

Пример

Подпапка logs/, которую создаёт log.write, в список не попадает — это отдельное хранилище, не файлы плагина.