2012-04-23 119 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'使用'如果沒有文件then' – hjpotter92 2012-04-23 06:16:09

+1

這只是一個品味的問題,兩種(幾乎)等價的,雖然我同意第二樣式(如'不是文件,那麼......)更具可讀性(至少對我而言)。 – 2012-04-23 20:09:48

回答

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

嘿什麼知道它終於看到我的文件。 Andrew Filonov也許就是它在file.close一直需要的。 順便說一句,我看到一些應該是io.close(文件)的帖子。它是一樣的嗎? 感謝您的回覆傢伙。我很感激。 – rpcabrera 2012-04-23 06:54:21

+0

也可以是'file:close()' - 這是'file.close(file)'的OO語法糖。如果你做了'local file = io.open(...)',那麼Lua GC會爲你做這個。您可以設置全局'file',直到程序結束纔可用,但實際上它應該是'fileExists'的本地文件。儘管我不認爲這會以任何方式影響你的簡單用例。 – 2012-04-23 20:11:26

0

如果你打開一個.lrc文件,並提供文件名爲.txt它會給出錯誤。我試過你的程序,在.ps1我的文件中,在lua文件的父文件夾中,它工作正常。 Check for yourself

+0

好吧,讓我們堅持.lrc,所以我無法打開.lrc文件?如果它對你很好,也許它是文件路徑。我應該在哪裏放置我的文件?我試圖把它放在一個文件夾,並使它像「\文件夾\ myFile.lrc」仍然無法正常工作。我該怎麼做呢? – rpcabrera 2012-04-23 06:40:00