我在iOS上使用Lua,我在使用io.open(“filename.txt”,“w”)打开文件时遇到问题,总是收到“Permission denied”错误。 我知道Lua在读写时需要文件的整个路径,但iOS等移动操作系统通过“沙盒”模糊了文件系统。 我这样解决了吗?
注意:我没有使用Corona SDK。
答案 0 :(得分:0)
在Lua:你必须指定
- system.DocumentsDirectory,
- system.TemporaryDirectory或
- system.CachesDirectory
打开文件进行写入时,system.pathForFile()函数中的参数。见io.open()。
请参阅Corona文档中的object:write()
在iOS中,用户数据通常存储在Documents目录中。
在iOS上,没有应用具有超级用户权限,这是一项安全功能,并通过沙盒强制执行。
注意:我对Corona / Lua一无所知,一个简单的Google“Lua ios文档目录”找到了上面的doc。谷歌首先,问第二。
答案 1 :(得分:0)
文件路径将相对于正确的沙盒文件夹,只要您通过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) --close the file after finishing with it
...
io.open(path, "w") --now the file is closed and can be opened again