【问题标题】:Skipping current directory and previous directory using luafilesystem dir iterator使用 luafilesystem 目录迭代器跳过当前目录和上一个目录
【发布时间】:2019-04-08 19:13:36
【问题描述】:

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

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

然而,迭代器的前两个字符串似乎总是'.''..'(当前目录和前一个目录的shell 符号)。 这会导致我的代码出现错误,因为&lt;path&gt; .. '/' .. '.' 绝不是文件或目录。

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

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

优点是我不必在每次迭代时显式检查字符串是'.' 还是'..'。一个缺点是可读性下降。 会不会出现前两个字符串不同的情况?

【问题讨论】:

    标签: lua luafilesystem


    【解决方案1】:

    您可以明确说明:

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

    【讨论】:

    • 这就是我想要避免的。我可能需要重新考虑。
    猜你喜欢
    • 2012-11-06
    • 2015-08-22
    • 1970-01-01
    • 2022-07-21
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多