在 iOS 上使用 Lua 的 io.open 函数时出现访问被拒绝的错误。
2014-5-31 20:19:12
收藏:0
阅读:200
评论:2
我在 iOS 上使用 Lua 时遇到了问题,无法使用 io.open("filename.txt","w") 打开文件,总是会得到 "Permission denied" 错误。
我知道 Lua 在读写时需要完整的文件路径,但移动操作系统(如 iOS)通过“沙盒”实现了文件系统的保护。
我该如何解决这个问题?
注意:我没有使用 Corona SDK。
点赞
用户1472151
只要通过 system.pathForFile("file.txt", directory_enum) 获取路径(其中 directory_enum 可以是 system.DocumentsDirectory、 system.ResourceDirectory 等等),文件路径就将相对于正确的沙盒文件夹。
否则,即使我正在使用 Corona,我也会遇到同样的“权限被拒绝”问题。问题是,在返回错误的 io.open 调用之前,我还有另一个 io.open 调用,本应读取相同的文件,但是该文件句柄在此后没有关闭。
因此,简单地说:
io.open(path, "r")
...
io.open(path, "w") --ERROR! this one returns a nil handle and a "permission denied"!
要解决这个问题,请执行以下操作:
local fh = io.open(path, "r")
...
io.close(fh) --关闭文件
...
io.open(path, "w") --现在文件已关闭,可以打开它了
2014-07-22 12:38:27
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
在 Lua 中:当打开文件进行写入时,必须在 system.pathForFile() 函数中指定 system.DocumentsDirectory、system.TemporaryDirectory 或 system.CachesDirectory 参数。请参见 io.open()。
请查看 Corona Docs 中的 object:write()。
在 iOS 上,用户数据通常存储在文档目录中。
在 iOS 上,没有应用程序具有 root 访问权限,这是一项安全功能,并由沙盒强制执行。
注意:我对 Corona/Lua 一无所知,简单的谷歌“Lua ios documents directory”找到了上述文档。先谷歌,再提问。