2011-08-01 57 views
1

我試圖連接lua文件夾中的每個文件,將一堆日誌編譯成一個主日誌並將其發送給某人。我使用ifs庫遍歷目錄中的每個文件,然後將其全部讀入並嘗試將其附加到主文件。Lua文件串聯

for name in lfs.dir("logs") do 
    if(name ~= "." and name ~= "..") then 
    local path = "logs/"..name 
    print (path) 
    local file=io.open(path,"R") 
    print "2" 
    local content = io.read("*all") 
    print "3" 
    io.close(file) 

    local f=io.open("log.csv","A") 
    file:write(content) 
    io.close(f)  
    end 
end 

有兩個問題。 ifs庫返回「。」和「..」其他文件名之前[有沒有更好的辦法忽略這些比if語句?] 使用我發現這裏的位:How to load all files from a directory?

重要的問題是,我的命令提示符下總是崩潰,當我測試該文件。它打印路徑(一個很好的),然後它崩潰之前到達「2」,我不知道爲什麼。該文件存在,我可以通過在另一個函數中添加行來操作它。

任何幫助將不勝感激。

回答

2

爲了避免檢查"."".."你應該使用lfs.attributes及其mode場,看看每個項目是一個文件或目錄(或別的東西)。您可能想要file:read - 這可能是您「崩潰」的原因。

我建議您使用"r""a+"作爲io.open模式參數。

哦,使用f:writecontent

+1

你應該指出的是'io.read'不從'file'讀取;它從全局文件句柄中讀取。全局文件句柄未打開。 –

+0

謝謝,完美的作品,io.read是崩潰。 – Sambardo

+0

另外,好奇的是,如果「R」與「r」的解釋不同,以及+爲「a +」增加了什麼,正如我之前沒有看到的那樣。 – Sambardo