VoxelEngine/doc/ru/scripting/filesystem.md
2024-06-13 20:12:49 +03:00

4.6 KiB
Raw Blame History

Файловая система и сериализация

Библиотека 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}/... возможна потеря данных при перезаписи мира.