如果我有这个代码
local f = io.open("../web/", "r")
print(io.type(f))
-- output: file
Run Code Online (Sandbox Code Playgroud)
我如何知道是否f指向某个目录?
ANSI C没有指定任何获取目录信息的方法,因此vanilla Lua无法告诉您该信息(因为Lua力求100%的可移植性).但是,您可以使用外部库(如LuaFileSystem)来标识目录.
Lua中的Progamming甚至明确说明了缺少的目录功能:
作为一个更复杂的例子,让我们编写一个返回给定目录内容的函数.Lua不在其标准库中提供此功能,因为ANSI C没有此作业的功能.
该示例继续向您展示如何dir在C中编写函数.
我在我使用的库中发现了这段代码:
function is_dir(path)
local f = io.open(path, "r")
local ok, err, code = f:read(1)
f:close()
return code == 21
end
Run Code Online (Sandbox Code Playgroud)
我不知道Windows中的代码是什么,但在Linux/BSD/OSX上它运行正常.
如果你这样做
local x,err=f:read(1)
Run Code Online (Sandbox Code Playgroud)
然后你会进去"Is a directory"的err.