aardio 文档

fsys 库模块帮助文档

fsys 成员列表 #

fsys.WIN32_FIND_DATA #

返回对象:findDataObject

fsys.attrib("字符串参数") #

返回文件属性,
以_FILE_ATTRIBUTE_前缀的常量标志各属性
注意:WIN10 新版存在设为隐藏文件后变只读的问题
参数为空字符串、null、不存在的路径都会 返回 -1

fsys.attrib("字符串参数",/*移除*/,_FILE_ATTRIBUTE/*多个属性用 | 链接*/) #

添加文件属性
参数一为文件路径
参数三可以用 | 操作符连接多个属性
成功返回新属性,失败返回null

fsys.attrib("字符串参数",_FILE_ATTRIBUTE/*多个属性用 | 链接*/) #

移除件属性
参数一为文件路径
参数二可以用 | 操作符连接多个属性
成功返回新属性,失败返回null

fsys.clear("路径","*.*") #

清空目录但不删除目录自身。
可选用参数 @2 指定要删除的子文件或子目录通配符。

如果参数 @1 指定的不是目录,则忽略不操作

fsys.copy #

复制文件或目录,
此函数失败返回 false 时可用 fsys.opError 获取错误代码

注意:包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看

fsys.copy(源路径,目标路径,FOF选项,进度标题,父窗口句柄) #

复制文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。
如果目标路径已存在或源路径含通配符则复制到目标目录下面,
否则复制文件或目录到参数@2指定的目标路径。

如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息

fsys.createDir("目录路径",是否清空重建) #

创建目录并返回创建成功的完整文件路径
可创建多层目录,参数二可选

fsys.createParentDir("字符串参数") #

创建指定路径的父目录.

fsys.delete #

删除文件或目录,成功返回 true,
删除含畸形路径的目录请改用 fsys.remove 函数。
此函数失败返回 false 时可用 fsys.opError 获取错误代码

fsys.delete("路径",FOF选项,进度标题,父窗口句柄) #

删除文件或目录,成功返回 true,
路径参数可以是多个路径组成的数组,其他参数可选
支持非空目录,文件名支持通配符

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息

fsys.deleteEx #

删除文件或目录,成功返回true,
此函数失败返回 false 时可用 fsys.opError 获取错误代码

fsys.deleteEx("路径",FOF选项,进度标题,父窗口句柄) #

删除文件或目录,成功返回true,
路径参数只能是字符串,其他参数可选
如果删除失败,则在下次系统重启时删除文件,
重启删除目录之前必须先清空目录,
重启删除文件的顺序与调用时的顺序相同

fsys.enum(目录路径,通配符,,目录回调函数) #

fsys.enum( "/遍历目录路径", "*.*",,  
    function(dirPath,dirName){  
        /*处理每个子目录前首先调用此函数,返回false跳过该目录*/  
        return false;  
    }   
);

fsys.enum(目录路径,通配符,回调函数,是否处理子目录) #

fsys.enum( "/遍历目录路径", "*.*",  
    function(dir,filename,fullpath,findData){   
        if(filename){   
            io.print("发现文件:"+filename,"完整路径:"+fullpath,"当前目录完整路径"+dir)  
            /*可使用 return false 退出枚举文件过程*/  
        }  
        else{  
            io.print( "发现目录,目录名称(非完整路径):" + dir )  
        }  
    }   
    ,/*如果此参数为false则忽略子目录*/  
);

fsys.enum(目录路径,通配符,回调函数,目录筛选函数) #

fsys.enum( "/遍历目录路径", "*.*",  
    function(dir,filename,fullpath,findData){   
        if(filename){   
            io.print("发现文件:"+filename,"完整路径:"+fullpath)/*可使用 return false退出枚举文件过程*/  
        }  
        else{  
            io.print( "发现目录:" + dir )  
        }  
    },  
    function(dirPath,dirName){  
        /*处理每个子目录前首先调用此函数,返回false跳过该目录*/  
        return true;  
    }   
);

fsys.formatSize #

该函数参数支持math.size64支持的所有参数类型

fsys.formatSize(字节长度) #

转换字节长度到适合的最大单位表示的文本,
单位使用 bytes,KB,MB,GB等

fsys.formatSize(字节长度低位,字节长度高位) #

转换字节长度到适合的最大单位( bytes,KB,MB,GB等 )
低位用于表示4GB以下的长度,高位以4GB为最小单位表示长度

fsys.fromFileTime #

返回对象:timeObject

fsys.fromFileTime(FILETIME结构体) #

将::FILETIME结构体转换为time对象

fsys.fullpath(路径) #

转换为完整路径。此函数已废弃,请改用 io.fullpath 函数。

fsys.getCurDir() #

获取当前目录。

当前目录易被改动,导致相对路径(例如 "./res/")位置变化。
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠,
例如:(例如 "/res/")。
很多组件(例如文件对话框)都可能会悄悄改变当前目录

fsys.getDrive() #

返回应用程序所在分区,以冒号结束

fsys.getExtensionName("字符串参数") #

返回参数 @1 传入路径的文件后缀名。
此函数返回的后缀名已转换为小写,并且不包含前面的.符号。
如果文件路径无后缀名则返回 null 空值。

用 io.splitpath(path).ext 也可取后缀名,区别包含.且未转为小写。

fsys.getFileName(文件路径) #

返回路径的所指向的文件名(或目录名称)

fsys.getParentDir("字符串参数") #

返回指定路径的父目录

fsys.getSpecial(_CSIDL) #

获取特殊文件夹。
参数 @1 使用_CSIDL开头的常量指定特殊文件夹的 CSIDL 标识,
省略参数 @1 则默认值获取桌面目录。
可选参数 @2 指定是否将 PIDL 转换为路径返回,也可以是一个用于拼接的相对路径
参数@2指定为false,则返回原始 PIDL 句柄。
可选使用参数 @3 指定访问令牌,用于修改用户目录。

io.getSpecial 函数的功能与此函数相同,
但 io.getSpecial 可指定多个用于拼接的文件路径参数,并且不能返回 PIDL。

fsys.knownFolder 可用于获取更多已知的特殊文件夹

fsys.getSpecialDefault(_CSIDL) #

获取默认用户的特殊文件夹,
参数@1使用_CSIDL开头的常量指定特殊文件夹的 CSIDL 标识,
参数用法同getSpecial,不同的是访问令牌默认指定为 default 用户,
注意 VISTA 以后的系统在此目录下创建文件或目录需要管理权限

fsys.getSysDir() #

返回系统目录
可选在参数中指定子路径并返回完整路径

fsys.getTempDir() #

返回临时目录,
注意拼接目录与子路径应当使用 io.joinpath 函数
获取临时文件路径应当改用 io.tmpname 函数

fsys.getWinDir() #

返回windows目录
可选在参数中指定子路径并返回完整路径

fsys.gmatch(文件路径,查找串) #

for m in fsys.gmatch( ,"./*指定模式串,  
用于在参数@1指定的文件中循环全局搜索符合条件的字符串,  
有几个匹配分组迭代器返回几个值,  
注意表达式不能以^开始*/") {   

}

fsys.idListFromPath(路径) #

路径转换为名称ID(PIDL)\路径必须存在

fsys.isDir("字符串参数") #

参数 @1 指定的文件路径是否指向一个目录。
调用 fsys.attrib 函数检查目标路径是否具有 _FILE_ATTRIBUTE_DIRECTORY 属性
参数为空字符串或 null 返回 false

包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看

fsys.isFile("字符串参数") #

参数 @1 指定的文件路径是否指向一个文件。
调用 fsys.attrib 函数检查目标路径是否存在且不具有 _FILE_ATTRIBUTE_DIRECTORY 属性
参数为空字符串或 null 返回 false

包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看

fsys.isHidden("字符串参数") #

是否隐藏文件
调用attrib检查文件是否具有_FILE_ATTRIBUTE_HIDDEN属性
注意:WIN10 新版存在设为隐藏文件后变只读的问题

fsys.isReadonly("字符串参数") #

文件是否只读
调用attrib检查文件是否具有_FILE_ATTRIBUTE_READONLY属性

fsys.isSystem("字符串参数") #

是否系统文件
调用attrib检查文件是否具有_FILE_ATTRIBUTE_SYSTEM属性

fsys.joinpath("根目录",不定个数子路径) #

注意根目录不可以圆点字符开始
可追加任意个子路径参数,如果子路径是绝对路径则返回子路径
拼接时可以使用空参数,但不可全部参数为空

fsys.list("目录路径","模式匹配","通配符") #

搜索当前目录下的文件,不搜索子目录下的文件,
返回匹配条件的文件名数组、子目录数组、全部子目录数组(无论是否匹配)。
注意有 3 个返回值,数组中使用文件名为键存放对应完整路径的值。
除参数@1以外其他参数可选,
参数@2使用模式匹配语法匹配文件名,模式匹配会成为第三个返回值的匹配条件,
通配符默认值是"*.*",也可以传入包含多个通配符的数组,通配符对第三个返回值无效

fsys.longpath(路径) #

转换为完整路径,并将短文件名转换为长文件名

fsys.move #

移动文件或目录。
此函数失败返回 false 时可用 fsys.opError 获取错误代码

fsys.move(源路径,目标路径,FOF选项,进度标题,父窗口句柄) #

移动文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。
如果目标路径已存在或源路径含通配符则移动到目标目录下面,
否则复制文件或目录到参数@2指定的目标路径。

如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息

fsys.opError #

fsys 库函数 copy,move,delete,deleteEx,rename
最后一次执行的错误代码,操作成功为 0。
这个值也是系统函数 SHFileOperationW 返回的错误代码,仅供调试时参考。
此错误代码可作为 lasterr 函数的参数获取错误信息,但并不完全准确。
请参考: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationw

包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看

fsys.opFlags #

fsys 库函数 copy,move,delete,deleteEx,rename
未指定 flags 参数时使用的默认值,默认为 0x614/*_FOF_NO_UI*/
指定此值为 0 则默认显示文件操作界面与错误信息界面

该选项详细说明请参考 FILEOP_FLAGS 文档
https://docs.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-shfileopstructw

fsys.pathFromIdList(PIDL名称ID,是否释放PIDL) #

名称ID(PIDL)转换为路径

fsys.rename #

重命名文件或目录,
此函数失败返回 false 时可用 fsys.opError 获取错误代码

fsys.rename(源路径,目标路径,FOF选项) #

重命名文件或目录,其他参数可选

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息

fsys.replace(文件路径,查找串,替换串,替换次数) #

替换文件内容,
查找串支持模式匹配,\支持所有string.replace函数支持的替换串格式,
不指定替换次数则替换所有匹配串

成功返回替换次数,否则返回 null

fsys.searchFile #

查找文件。

fsys.searchFile(文件名) #

检查程序根目录、当前工作目录、系统目录
是否包含指定文件,找到则返回文件完整路径。
不搜寻子目录,参数 @1 支持 "*","?" 等通配符。

fsys.searchFile(文件名,目录,...) #

检查一个或多个目录下是否包含指定文件
如果存在返回完整路径,否则返回 null。
不搜寻子目录,参数 @1 支持 "*","?" 等通配符。

fsys.searchFile(文件名,目录,true) #

在指定目录以及其子目录下搜寻指定文件,
如果存在返回完整路径,否则返回 null。

内部调用 fsys.enum 查找,参数 @1 支持 "*","?" 等通配符

fsys.setAttributes("字符串参数",_FILE_ATTRIBUTE) #

设置文件属性

fsys.setCurDir(目录) #

设置当前目录。

当前目录易被改动,导致相对路径(例如 "./res/")位置变化。
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠,
例如:(例如 "/res/")。
很多组件(例如文件对话框)都可能会悄悄改变当前目录

fsys.shortpath(路径) #

转为符合 8.3 格式短路径。
如果文件名符合 8.3 格式且包含空格(例如目录名不超过 8 个字符),则不会去除空格。
如果文件不存在,返回空值。

短文件名指向会因实际文件数变更,所以不能把短路径存入数据库
且并不保证会去除空格。
创建 process 对象或调用类似函数时,
用数组或多参数指定启动参数可自动处理包含空格的路径。

全局对象 成员列表 #

_CSIDL_COMMON_FAVORITES #

0x1f

_CSIDL_COOKIES #

0x21

_CSIDL_HISTORY #

0x22

_CSIDL_INTERNET_CACHE #

0x20

_CSIDL_TEMPLATES #

0x15

findDataObject 成员列表 #

findDataObject.cAlternateFileName #

8.3 格式文件名
UTF16 编码,请调用 string.fromUtf16 转换

findDataObject.cFileName #

长文件名
UTF16编码,请调用 string.fromUtf16 转换

findDataObject.dwFileAttributes #

以数值表示的文件属性

findDataObject.ftCreationTime #

文件创建时间
请调用 fsys.fromFileTime 转换为 time 对象

findDataObject.ftLastAccessTime #

文件最后一次访问时间
请调用 fsys.fromFileTime 转换为 time 对象

findDataObject.ftLastWriteTime #

文件最后一次修改时间
请调用 fsys.fromFileTime 转换为 time 对象

findDataObject.isDir #

是否目录,
仅在 fsys.enum 的回调参数中有效

findDataObject.nFileSizeHigh #

文件长度高 32 位

findDataObject.nFileSizeLow #

件长度低 32 位

全局常量

_CSIDL_COMMON_FAVORITES #

0x1f

_CSIDL_COOKIES #

0x21

_CSIDL_HISTORY #

0x22

_CSIDL_INTERNET_CACHE #

0x20

_CSIDL_TEMPLATES #

0x15

自动完成常量

_CSIDL_ADMINTOOLS=0x30
_CSIDL_ALTSTARTUP=0x1d
_CSIDL_APPDATA=0x1a
_CSIDL_BITBUCKET=0xa
_CSIDL_CDBURN_AREA=0x3b
_CSIDL_COMMON_ADMINTOOLS=0x2f
_CSIDL_COMMON_ALTSTARTUP=0x1e
_CSIDL_COMMON_APPDATA=0x23
_CSIDL_COMMON_DESKTOPDIRECTORY=0x19
_CSIDL_COMMON_DOCUMENTS=0x2e
_CSIDL_COMMON_MUSIC=0x35
_CSIDL_COMMON_OEM_LINKS=0x3a
_CSIDL_COMMON_PICTURES=0x36
_CSIDL_COMMON_PROGRAMS=0x17
_CSIDL_COMMON_STARTMENU=0x16
_CSIDL_COMMON_STARTUP=0x18
_CSIDL_COMMON_TEMPLATES=0x2d
_CSIDL_COMMON_VIDEO=0x37
_CSIDL_COMPUTERSNEARME=0x3d
_CSIDL_CONNECTIONS=0x31
_CSIDL_CONTROLS=3
_CSIDL_DESKTOP=0
_CSIDL_DESKTOPDIRECTORY=0x10
_CSIDL_DRIVES=0x11
_CSIDL_FAVORITES=6
_CSIDL_FLAG_CREATE=0x8000
_CSIDL_FLAG_DONT_UNEXPAND=0x2000
_CSIDL_FLAG_DONT_VERIFY=0x4000
_CSIDL_FLAG_MASK=0xFF00
_CSIDL_FLAG_NO_ALIAS=0x1000
_CSIDL_FLAG_PER_USER_INIT=0x800
_CSIDL_FONTS=0x14
_CSIDL_INTERNET=1
_CSIDL_LOCAL_APPDATA=0x1c
_CSIDL_MYDOCUMENTS=0x5
_CSIDL_MYMUSIC=0xd
_CSIDL_MYPICTURES=0x27
_CSIDL_MYVIDEO=0xe
_CSIDL_NETHOOD=0x13
_CSIDL_NETWORK=0x12
_CSIDL_PERSONAL=5
_CSIDL_PRINTERS=4
_CSIDL_PRINTHOOD=0x1b
_CSIDL_PROFILE=0x28
_CSIDL_PROGRAMS=2
_CSIDL_PROGRAM_FILES=0x26
_CSIDL_PROGRAM_FILESX86=0x2a
_CSIDL_PROGRAM_FILES_COMMON=0x2b
_CSIDL_PROGRAM_FILES_COMMONX86=0x2c
_CSIDL_RECENT=0x8
_CSIDL_RESOURCES=0x38
_CSIDL_RESOURCES_LOCALIZED=0x39
_CSIDL_SENDTO=0x9
_CSIDL_STARTMENU=0xb
_CSIDL_STARTUP=7
_CSIDL_SYSTEM=0x25
_CSIDL_SYSTEMX86=0x29
_CSIDL_WINDOWS=0x24
_FOF_ALLOWUNDO=0x40
_FOF_CONFIRMMOUSE=0x2
_FOF_FILESONLY=0x80
_FOF_NOCONFIRMATION=0x10
_FOF_NOCONFIRMMKDIR=0x200
_FOF_NOCOPYSECURITYATTRIBS=0x0800
_FOF_NOERRORUI=0x0400
_FOF_NORECURSION=0x1000
_FOF_NO_UI=0x614
_FOF_RENAMEONCOLLISION=0x8
_FOF_SILENT=0x4
_FOF_SIMPLEPROGRESS=0x100
_FOF_WANTMAPPINGHANDLE=0x20
_MAX_WPATH_BYTES=0x208

Markdown 格式