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


RecentChanges · preferences
编辑 · 历史
最后编辑于 2010 年 9 月 25 日 晚上 10:21 GMT (差异)