Lua 食譜 |
|
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.