用luajit编写一个读取文件夹中的文件,正确代码
时间: 2024-05-09 16:19:49 浏览: 160
以下是一个示例代码,使用LuaJIT的ffi库和标准库中的lfs库来读取文件夹中的文件名:
```lua
local ffi = require("ffi")
local lfs = require("lfs")
-- 获取当前工作目录
local current_dir = lfs.currentdir()
-- 定义一个结构体来存储文件信息
ffi.cdef[[
typedef struct {
char* name;
int isdir;
} FileInfo;
]]
-- 定义一个函数来获取文件信息
local function get_file_info(path)
local stat = lfs.attributes(path)
local info = ffi.new("FileInfo")
info.name = ffi.cast("char*", path)
info.isdir = stat.mode == "directory"
return info
end
-- 定义一个函数来读取文件夹中的文件
local function read_dir(path)
local files = {}
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local file_path = current_dir .. "/" .. file
local info = get_file_info(file_path)
table.insert(files, info)
end
end
return files
end
-- 读取当前工作目录中的文件
local files = read_dir(current_dir)
-- 输出文件信息
for i, file in ipairs(files) do
print(i, ffi.string(file.name), file.isdir)
end
```
这个代码首先通过lfs库获取当前工作目录,然后使用ffi库定义了一个结构体来存储文件信息。接下来,它定义了一个函数来获取文件信息,并使用lfs库中的dir函数来读取文件夹中的文件。最后,它将文件信息存储在一个数组中,并输出每个文件的信息。
阅读全文