电晕读写文件(第一次访问)

时间:2013-09-11 04:01:16

标签: json file variables save corona

我正在尝试编写一个在启动应用程序之前读取声音和音乐状态的函数。 问题是:第一次运行时,将不会记录任何数据。

首先,我尝试了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”)。我只是不明白为什么。

如果你有一个处理第一次情况的代码安静,那对我来说就足够了。感谢。

1 个答案:

答案 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了解详情