我正在尝试编写一个在启动应用程序之前读取声音和音乐状态的函数。 问题是:第一次运行时,将不会记录任何数据。
首先,我尝试了here中建议的JSON函数,我收到了这个错误:
尝试调用全局'saveTable'(零值)
有没有办法测试文件是否存在?
然后,我尝试了这个:
-- THIS function is just to try to find the file.
-- Load Configurations
function doesFileExist( fname, path )
local results = false
local filePath = system.pathForFile( fname, path )
--filePath will be 'nil' if file doesn,t exist and the path is "system.ResourceDirectory"
if ( filePath ) then
filePath = io.open( filePath, "r" )
end
if ( filePath ) then
print( "File found: " .. fname )
--clean up file handles
filePath:close()
results = true
else
print( "File does not exist: " .. fname )
end
return results
end
local fexist= doesFileExist("optionsTable.json","")
if (fexist == false) then
print (" optionsTable = nil")
optionsTable = {}
optionsTable.soundOn = true
optionsTable.musicOn = true
saveTable(optionsTable, "optionsTable.json") <<<--- ERROR HERE
print (" optionsTable Created")
end
奇怪的是我在saveTable上遇到错误(optionsTable,“optionsTable.json”)。我只是不明白为什么。
如果你有一个处理第一次情况的代码安静,那对我来说就足够了。感谢。
答案 0 :(得分:1)
这里有一些代码来检查文件是否存在,你必须先尝试打开文件,知道它是否存在
function fileExists(fileName, base)
assert(fileName, "fileName is missing")
local base = base or system.ResourceDirectory
local filePath = system.pathForFile( fileName, base )
local exists = false
if (filePath) then -- file may exist wont know until you open it
local fileHandle = io.open( filePath, "r" )
if (fileHandle) then -- nil if no file found
exists = true
io.close(fileHandle)
end
end
return(exists)
end
和用法
if fileExists("myGame.lua") then
-- do something wonderful
end
您可以参考此link了解详情