4.6 KiB
Файловая система и сериализация
Библиотека file
Библиотека функций для работы с файлами
file.resolve(путь: str) -> str
Функция приводит запись точка_входа:путь (например user:worlds/house1) к обычному пути. (например C://Users/user/.voxeng/worlds/house1)
Note
Функцию не нужно использовать в сочетании с другими функциями из библиотеки, так как они делают это автоматически
Возвращаемый путь не является каноническим и может быть как абсолютным, так и относительным.
file.read(путь: str) -> str
Читает весь текстовый файл и возвращает в виде строки
file.read_bytes(путь: str) -> array of integers
Читает файл в массив байт.
file.write(путь: str, текст: str) -> nil
Записывает текст в файл (с перезаписью)
file.write_bytes(путь: str, data: array of integers)
Записывает массив байт в файл (с перезаписью)
file.length(путь: str) -> int
Возвращает размер файла в байтах, либо -1, если файл не найден
file.exists(путь: str) -> bool
Проверяет, существует ли по данному пути файл или директория
file.isfile(путь: str) -> bool
Проверяет, существует ли по данному пути файл
file.isdir(путь: str) -> bool
Проверяет, существует ли по данному пути директория
file.mkdir(путь: str) -> bool
Создает директорию. Возвращает true если была создана новая директория
file.mkdirs(путь: str) -> bool
Создает всю цепочку директорий. Возвращает true если были созданы директории.
file.find(путь: str) -> str
Ищет файл от последнего пака до res. Путь указывается без префикса. Возвращает путь с нужным префиксом. Если файл не найден, возвращает nil.
file.remove(путь: str) -> bool
Удаляет файл. Возращает true если файл существовал. Бросает исключение при нарушении доступа.
file.remove_tree(путь: str) -> int
Рекурсивно удаляет файлы. Возвращает число удаленных файлов.
Библиотека json
Библиотека содержит функции для сериализации и десериализации таблиц:
json.tostring(object: table, human_readable: bool=false) -> str
Сериализует объект в JSON строку. При значении второго параметра true будет использовано многострочное форматирование, удобное для чтения человеком, а не компактное, использующееся по-умолчанию.
json.parse(code: str) -> table
Парсит JSON строку в таблицу.
Библиотека toml
Библиотека содержит функции для сериализации и десериализации таблиц:
toml.tostring(object: table) -> str
Сериализует объект в TOML строку.
toml.parse(code: str) -> table
Парсит TOML строку в таблицу.
Сохранение данных в мире
При сохранении данных пака в мире следует использовать функцию
pack.data_file(id_пака: str, имя_файла: str) -> str
Функция возвращает путь к файлу данных по типу: world:data/id_пака/имя_файла
и создает недостающие директории в пути.
При использовании путей не соответствующим data/{packid}/... возможна потеря данных при перезаписи мира.