2012-04-23 1 views
1

Прошу прощения за дублирующийся пост или еще что-то. Я просто пытаюсь подтвердить это, потому что я видел подобный пост и делал то же самое, но мой вывод не был тем, чем я хотел быть проблемой, - это прочитать текстовый файл на языке Lua. Вот мой код:Чтение текстовых файлов в Lua

function fileExists(filename) 
     file = io.open(filename, "r") 
     if file == nil then 
       return false 
     else 
       return true 
     end 
    end 

    if fileExists ("myFile.txt") then 
      print ("Hello") 
    else 
      print("not found") 
    end 

Он продолжает возвращать false и печать не найдена. А также пытаюсь открыть файл .lrc вместо .txt. Что не так с этими простыми, маленькими строками кода?

+0

вместо 'если файл == nil' использовать' если не файл затем' – hjpotter92

+1

Это просто дело вкуса, два вида (почти) эквивалентны, хотя я согласен второй стиль ('если not file then ... ') более читабельна (по крайней мере для меня). –

ответ

3

Ваш код ОК, для файла закрытия части, за исключением:

 file = io.open(filename, "r") 
    if file == nil then 
      return false 
    else 
      file.close(file) 
      return true 

У вас действительно есть файл myFile.txt в текущем каталоге?

%ls -l 
-rwxr--r-- 1 aef wheel 324 23 апр 10:24 a.lua 
-rw-r--r-- 1 aef wheel 0 23 апр 10:16 myFile.txt 
%lua-5.1 a.lua 
Hello 
+0

Эй, что я знаю, наконец увидел мой файл. Эндрю Филонов, возможно, это то, что ему нужно было в течение всего файла file.close. Кстати, я видел сообщение, которое должно быть io.close (файл). Это то же самое? Спасибо за ответ, ребята. Я ценю это. – rpcabrera

+0

Это также может быть 'файл: close()' - это сахара синтаксиса OO для 'file.close (file)'. Если вы сделали локальный файл = io.open (...) ', то Lua GC сделает это за вас. Вы устанавливаете глобальный 'файл', который доступен до окончания программы, но на самом деле он должен быть локальным для' fileExists'. Хотя я не чувствую, что это может повлиять на ваш простой случай использования. –

0

Если вы открываете файл .lrc и указываете имя файла как .txt, это даст вам предупреждение. Я попробовал вашу программу на собственном файле .ps1, расположенном в родительской папке, в файл lua, и он отлично работал. Check for yourself

+0

хорошо, поэтому давайте придерживаться .lrc, поэтому я не могу открыть .lrc-файлы? если это сработало для вас хорошо, возможно, это путь к файлу. где я должен поставить свой файл ?. Я попытался поместить его в папку и сделал это, как «\ folder \ myFile.lrc» все еще не работал. Как мне это сделать? – rpcabrera