iOS上使用lua io.open拒绝权限

时间:2014-05-31 19:43:23

标签: ios lua permission-denied

我在iOS上使用Lua,我在使用io.open(“filename.txt”,“w”)打开文件时遇到问题,总是收到“Permission denied”错误。 我知道Lua在读写时需要文件的整个路径,但iOS等移动操作系统通过“沙盒”模糊了文件系统。 我这样解决了吗?

注意:我没有使用Corona SDK。

2 个答案:

答案 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_enumsystem.DocumentsDirectorysystem.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