Lua 食谱

lua-users home
wiki

这里介绍了各种方法。

获取文件或目录列表

标准版本的 Lua 本身不包含用于从文件系统获取文件或目录列表的可移植方法。原因是,为了可移植性,Lua 将自身限制为 ANSI C,而 ANSI C 本身不提供此功能。但是,这些功能通常可以通过操作系统获得(例如,POSIX 上的 readdir,VC/Windows 上的 _findfirst / _findnext,或纯 Win32(kernel32.dll)上的 FindFirstFile/FindNextFile)。可以通过扩展库甚至 os.execute 调用 shell 来访问这些功能。

有一些 Lua 扩展库提供了类似的功能。 ExtensionProposal API 具有 os.dir 的 Windows 和 POSIX 实现。从 1.2 版本开始,LuaFileSystem [1] 有一个 lfs.dir 函数。lua-fs [2] 中有一个 readdir,但它在撰写本文时(2007 年)使用的是 POSIX readdir。另请参阅 PitLibDirectoryStuff

可以通过 OS shell(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


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2010 年 9 月 26 日凌晨 4:21 GMT (差异)