使用 luafilesystem dir 迭代器跳过当前目录和上一个目录



在LuaFileSystem中,lfs.dir(<path>)以字符串的形式迭代目录的内容。如果我想打印目录内容的属性,我可以这样做(使用 inspect.lua 打印人类可读的表表示形式(:

for name in lfs.dir(<path>) do
    local path = <path> .. '/' .. name
    inspect(lfs.attributes(path))
end

但是,迭代器中的前两个字符串似乎总是'.''..'(当前目录和上一个目录的 shell 表示法(。这会导致我的代码出错<path> .. '/' .. '.'因为代码从来都不是文件或目录。

我已经开始跳过这些,在循环之前将状态推进两次。

local it, state = lfs.dir(path)
state:next()
state:next()
for file_name, _ in it, state, nil do
    -- stuff
end

优点是我不必显式检查字符串是否'.''..'每次迭代。一个缺点是可读性降低。会有前两个字符串不同的情况吗?

你可以明确说明它:

for name in lfs.dir(<path>) do
    if name ~= '.' and name ~= '..' then
        local path = <path> .. '/' .. name
        inspect(lfs.attributes(path))
    end
end

相关内容

  • 没有找到相关文章

最新更新