小丑鼠

JokyMouse 开发者文档

小丑鼠 Latest

jokymouse.fs API

jokymouse.fs 模块通过 require("jokymouse.fs") 加载,提供按脚本隔离的文件读写能力。

local fs = require("jokymouse.fs")

文件空间

jokymouse.fs 使用 URI 风格的路径。默认情况下,脚本只能访问属于自己的私有空间,不会读写其他脚本的数据。

协议普通模式开发模式说明
data://可用可用脚本私有持久数据
cache://可用可用脚本私有缓存,可由用户清理
temp://可用可用脚本私有临时文件
file://不可用可用真实本地文件系统路径

示例:

local fs = require("jokymouse.fs")

fs.write_text("data://state.json", '{"step":1}')
local state = fs.read_text("data://state.json")
print(state)
print(fs.resolve("data://state.json"))

可用函数

函数签名说明
read_textfs.read_text(path)读取 UTF-8 文本文件
write_textfs.write_text(path, content)覆盖写入 UTF-8 文本文件
append_textfs.append_text(path, content)在文件末尾追加 UTF-8 文本
existsfs.exists(path)判断文件或目录是否存在
resolvefs.resolve(path)将 URI 路径解析为本机绝对路径,便于调试
read_dirfs.read_dir(path)读取目录项名称列表
create_dirfs.create_dir(path)递归创建目录
remove_filefs.remove_file(path)删除文件,返回是否真的删除
copy_filefs.copy_file(from, to)复制文件,返回复制字节数
read_jsonfs.read_json(path)读取 JSON 文件并解析为 Lua 值
write_jsonfs.write_json(path, value)将 Lua 值序列化为 JSON 写入

限制

  • 单文件大小限制 1MB,超过会失败。
  • 每个脚本的私有空间 data://cache://temp:// 合计最多保存 100 个文件;目录不计入数量,删除文件后会释放名额。
  • 路径中不能包含 .. 进行目录穿越。
  • file:// 仅开发模式可用;文件大小没有限制。

开发模式

开发模式下,file:// 会被允许,用于调试本机文件。例如:

local jm = require("jokymouse")
local fs = require("jokymouse.fs")

if jm.is_dev_mode() then
  local text = fs.read_text("file://C:/Users/me/Desktop/input.txt")
  print(text)
end

开发模式脚本不能发布到市场。即使你关闭开发模式,发布时仍会扫描源码;只要脚本里保留 file://ioos.executedofileloadfile 等开发专属或危险能力,提交也会被拒绝。

与 jokymouse.storage 的区别

jokymouse.storage 适合保存少量结构化状态,单脚本限制 64KB。

jokymouse.fs 适合保存日志、缓存、配置文件或较大的文本数据。普通模式下仍然只允许访问脚本私有空间。