2013-09-11 2 views
0

Я пытаюсь написать функцию, которая будет читать звуковые и музыкальные состояния перед началом моего приложения. Проблема: при первом запуске данных не будет записано никаких данных.Corona чтение и запись файлов (первый раз)

Во-первых, я попробовал предложенную функцию JSON из here, и я получил эту ошибку:

Попытка вызвать глобальную «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

вот некоторый код, чтобы проверить, если файл существует, вы должны попытаться открыть файл первым, чтобы знать, если он существует

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 для получения более подробной информации

Смежные вопросы