Lua 食譜

lua-users home
wiki

以下是執行任務的各種方式。

取得檔案或目錄清單

Lua 標準版本本身不包含可攜式的取得檔案系統中檔案或目錄清單的方法。其原因在於為了攜帶性,Lua 自限於 ANSI C,而 ANSI C 本身並不具備此功能。然而,這些功能往往可以透過作業系統取得(例如 POSIX 上的 readdir,VC/Windows 上的 _findfirst / _findnext,或一般 Win32(kernel32.dll)上的 FindFirstFile/FindNextFile)。這些功能可以透過延伸函式庫,或甚至透過 os.execute 呼叫殼層取得。

有幾種 Lua 延伸函式庫提供類似的功能。 ExtensionProposal API 提供 os.dir 的 Windows 和 POSIX 實作。從 1.2 版開始, LuaFileSystem [1] 有個 lfs.dir 函式。 lua-fs [2] 中有一個 readdir,但這是在撰寫本文時(2007 年)使用 POSIX readdir。另請參閱 PitLibDirectoryStuff

透過 OS 殼層,可以執行一些較不具可攜性的破解方式 os.execute 呼叫。請參閱 stdlib [3] 中的 UNIX io.readDir 函式。此方法有些低效率,因為它包括建立處理序。

也可以透過仿真函式,在非 POSIX 系統上使用 POSIX readdir。Win32 模擬 POSIX 的 readdir 及其相關函式 [4] [5]。另請參閱 mingw-runtime [6] 中的 mingwex/direct.c

另一個選項是透過 Lunatic Python [7] 使用 Python 的 os.listdir(),如下所示。

require "python"
pg = python.globals()
pos = pg.import("os")
x = pos.listdir(".")
print(x)

Lua 5.1.

--DavidManura


註:部分內容已移至 MakingLuaLikePhp


RecentChanges · preferences
edit · history
上一次編輯:2010 年 9 月 26 日,上午 4:21 (GMT) (diff)