lua 获取指定路径下的所有文件夹

您所在的位置:网站首页 c读取文件夹下所有文件个数 lua 获取指定路径下的所有文件夹

lua 获取指定路径下的所有文件夹

2024-07-16 20:08| 来源: 网络整理| 查看: 265

一、io.popen 函数获取

  io.popen 是 Lua 中的一个函数,它允许你执行一个外部命令并将命令的输出作为流处理。如果你想在 Lua 中通过 io.popen 执行 dir 命令(linux 命令是ls )来获取指定文件夹下的所有文件及其路径,你可以构造一个适用于 Windows 环境下的 dir 命令,并通过 io.popen 执行这个命令。

-- 在 Lua 中调用 dir 命令并获取输出 local handle = io.popen('dir /b /s "C:\\path\\to\\your\\folder\\"') local files = {} for file in handle:lines() do files[#files + 1] = file end handle:close() -- 现在 'files' 数组包含了文件夹下所有文件的完整路径

这里的 /b 参数表示简洁格式(只显示文件名),而 /s 表示包括所有子目录的内容。请注意,你需要将 "C:\\path\\to\\your\\folder\\" 替换为你要查找的实际文件夹路径。

如果你是在非 Windows 系统下,比如 Unix/Linux 系统,那么应使用 ls 或 find 命令代替 dir:

-- 在 Unix/Linux 系统中获取文件夹及其子文件夹下的所有文件 local handle = io.popen('find "path/to/your/folder/" -type f') -- ... 同样的处理逻辑 ...

在这个例子中,find 命令用于查找指定目录及其子目录下所有的普通文件 (-type f)。

二、使用lfs(LuaFileSystem)库来获取 local lfs = require "lfs" function listFolders(path) local folders = {} local attr = lfs.attributes(path) if attr.mode == "directory" then table.insert(folders, path) for file in lfs.dir(path) do if file ~= "." and file ~= ".." then local f = path..'/'..file local attr = lfs.attributes(f) if attr.mode == "directory" then listFolders(f) end end end end return folders end -- 使用示例 local path = "/your/specified/path" local folders = listFolders(path) for _, folder in ipairs(folders) do print(folder) end

确保你已经安装了lfs库,如果没有安装,你可以通过LuaRocks来安装它

luarocks install luafilesystem

这段代码会打印出指定路径下所有的文件夹路径。如果你只想获取直接子文件夹,可以在listFolders函数中去掉对lfs.dir的递归调用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3