Перейти к основному содержимому

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, errUTF-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