mp.file — 14 функций
| Функция | Возврат | Описание |
|---|---|---|
load(path) | data, err | {blocks=[{address, data[], size}], block_count, populated=[{region, offset, bytes}]} — парсит HEX/S19/BIN И заполняет буфер по совпавшим адресам. err ненулевой если все табы read-only |
load_bin(path) | bytes, err | Возвращает файл как плоский массив байт И заполняет активный регион с offset 0 |
save(path, blocks) | ok, err | Сохранить HEX/S19/BIN (формат по расширению). Без blocks — (false, "use mp.memory.save_file(path)") |
save_bin(path, bytes) | ok, err | Сохранить сырые байты в .bin |
read_text(path) | text, err | UTF-8 текст |
write_text(path, s) | ok, err | Запись с усечением |
append_text(path, s) | ok, err | Дозапись |
exists(path) | bool | — |
size(path) | int | Размер в байтах (0 если файла нет) |
extension(path) | string | Расширение без точки |
basename(path) | string | Имя без директории и расширения |
dirname(path) | string | Путь к директории |
list_dir(path, filter?) | table | Файлы и подпапки; filter — glob "*.lua" |
detect_format(path) | string | "hex" | "s19" | "bin" | "unknown" |
Пример
local data, err = mp.file.load("C:/fw.hex")
if err and err ~= "" then mp.log.error(err); return end
mp.log.info("blocks=" .. data.block_count)
mp.file.save("C:/out.s19", data.blocks)
mp.file.write_text("C:/log.csv", "serial,result\n")
mp.file.append_text("C:/log.csv", "SN001,OK\n")
for _, name in ipairs(mp.file.list_dir("C:/scripts", "*.lua")) do
mp.log.info(name)
end