LuaFileSystem,简称lfs,
是一个用于Lua进行文件访问的库,支持Lua5.1和Lua5.2,且跨平台。
安装:luarocks install luafilesystem
所有的路径中不识别类似于”~“的替代符
函数及属性说明:
lfs.attributes(filepath[,aname])
- 返回一个包含filepath各种属性的表(如发生错误则返回nil和错误消息)
- 第二个为可选参数,表示只返回指定属性的值
- 这种用法相当于lfs.attributes(filepath[,aname]).aname,只不过不返回一个table并且仅仅从os取得一个属性值
属性table包含以下属性值:
其中除mode是一个字符串外,其它的全部是数字;时间相关的属性值与os.time()得到的数字一致
- dev:Unix系统中,表示inodes所代表的设备。Windows系统上,表示文件所在的磁盘驱动器号
- ino:Unix上表示inodes数。windows上无意义
- mode:关联的保护模式的字符串(值可以是file、directory、link、socket、named pip、char device、block device或其他)。
- nlink:文件上的硬链接数
- uid:unix系统中的user-id,windows上为0
- gid:unix系统中的group-id,windows上为0
- rdev:unix上,表示设备类型。windows上含义与dev相同
- access:最后一次访问时间
- modification:最后一次修改时间
- change:最后一次文件状态修改时间
- size:以bytes计算的文件大小
- blocks:unix系统上分配给文件的block数
- blksize:unix中文件系统I/O块大小
lfs.chdir(path)
- 切换工作路径到path
- 成功时返回true,错误时返回nil或者加上错误信息
lfs.currentdir()
- 返回当前工作路径或者nil加上错误信息
lfs.dir(path)
- 返回内容相当于执行指令”ls -a“,没有内容时返回nil
- 如path不是目录,报错
- 所获取到的内容包括”.“和”..“两个特殊目录
lfs.lock(filehandle,mode[,start[,length]])
- 锁定文件或文件的一部分。这个函数作用于打开的文件;
- 第一个参数为文件句柄。
- mode可以是r(用于读/共享锁)或w(用于写/独占锁)。
- 可选参数start和length可用于指定起始点及其长度;两者都是数字。
- 如果操作成功,返回true;如果发生错误,它将返回nil加上一个错误字符串。
lfs.mkdir(dirname)
- 创建目录。参数是新目录的名称。
- 操作成功,返回true;
- 发生错误,返回nil加上一个错误字符串。
lfs.rmdir(dirname)
- 删除目录。参数是目录的名称。
- 如果操作成功,返回true;
- 如果发生错误,它将返回nil加上一个错误字符串。
lfs.touch(filepath[, atime[, mtime]])
- 创建文件并设置文件的访问和修改时间。这个函数绑定到utime函数。
- 第一个参数是文件名,
- 第二个参数(atime)是访问时间,
- 第三个参数(mtime)是修改时间。
- 这两个时间都是以秒为单位(这两个时间使用Lua标准函数os.date生成)。
- 如果省略修改时间,则使用访问时间作为修改时间;
- 如果两个时间都省略,则使用当前时间。
- 如果操作成功,返回true;如果发生错误,它将返回nil加上一个错误字符串。
lfs.unlock(filehandle[,start[,length]])
- 解锁文件或文件的一部分。这个函数作用于打开的文件;
- 第一个参数为文件句柄。
- 可选参数start和length可用于指定起始点及其长度;两者都是数字。
- 如果操作成功,返回true;如果发生错误,它将返回nil加上一个错误字符串。
使用实例:
require"lfs"
function attrdir (path)
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..'/'..file
print ("\t "..f)
local attr = lfs.attributes (f)
assert (type(attr) == "table")
if attr.mode == "directory" then
attrdir (f)
else
for name, value in pairs(attr) do
print (name, value)
end
end
end
end
end
attrdir (".")