aardio 文档

fsys 库模块帮助文档

fsys 成员列表 #

fsys.WIN32_FIND_DATA #

返回对象:findDataObject

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

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

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

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

fsys.attrib(文件路径) #

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

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。
此函数失败返回 false 时可用 fsys.opError 获取错误代码。
此函数支持删除非空目录。
仅删除空目录请改用 ::Kernel32.RemoveDirectory( io.fullpath(dirPath) )
删除含畸形路径的目录请改用 fsys.remove (需导入 fsys.remove 库)。

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

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

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

fsys.deleteEmptyDir(空目录路径) #

如果参数 @1 指定的路径是一个存在的空目录,则删除该目录。
成功则返回 true,失败返回 false。
可使用 ..lasterr 获取错误原因。

fsys.deleteEx #

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

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

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

fsys.each("搜索目录路径","模式匹配","通配符",搜索选项) #

for i,filename in fsys.each("/",,"*.*","file"){  
    /*创建一个适用于 for in 语句的迭代器,  
用于遍历参数 @1 指定目录下的文件或目录名,不搜索子目录。  

调用参数:  
- 参数 @1 必须指定搜索目录。  
- 可选参数 @2 使用模式匹配语法匹配文件名,  
- 可选参数 @3 默认值是通配符`*.*`,也可以传入包含多个通配符的数组    
- 可选参数 @4 指定为 "file" 仅遍历文件,指定为 "dir" 仅遍历目录,不指定则选遍历文件后遍历目录。  

迭代变量:  
- idx 数组索引值  
- filename 文件名或者目录名*/  
}

fsys.enum #

递归搜索目录下的全部文件。

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.findData() #

返回对象:findDataObject

fsys.findData(文件路径) #

如果参数 @1 指定文件或目录路径,
则获取该路径的 WIN32_FIND_DATA,失败返回 null。
可用于获取文件时间、大小、显示名称等信息。
未指定参数时直接返回 WIN32_FIND_DATA。

fsys.formatSize #

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

fsys.formatSize(字节长度) #

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

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

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

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 标识,
参数用法同 fsys.getSpecial,不同的是访问令牌默认指定为 default 用户,
注意 VISTA 以后的系统在此目录下创建文件或目录需要管理权限

fsys.getSysDir() #

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

fsys.getTempDir() #

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

fsys.getTime() #

返回对象:filetimesObject

fsys.getTime(/*文件或目录路径*) #

返回文件时间,返回值为包含以下字段的的表对象:

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.isEmptyDir(路径) #

参数 @1 指定的文件路径是否指向一个空目录。
如果参数不是一个存在的目录返回 false。
如果参数指定的是文件而非目录路径返回 false 。

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 #

获取指定目录下的文件名目录名,不搜索子目录。
如果需要递归搜索子目录请改用 fsys.enum 函数。

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

搜索参数 @1 指定目录下的文件或目录,不搜索子目录。
返回 3 个值,分别为匹配的文件名数组、匹配的子目录数组、全部子目录数组(无论是否匹配)。
返回的数组对象使用文件名为键存放对应完整路径的值。

除参数 @1 必须指定搜索目录以外其他参数都是可选参数。
参数 @2 可用模式匹配语法指定搜索模式串,所有返回值包含的文件或目录都必须与此模式匹配。
参数 @3 默认值是通配符*.*,也可以传入包含多个通配符的数组,第三个返回值不受通配符影响。

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 格式文件名。

findDataObject.cFileName #

文件名。

findDataObject.dwFileAttributes #

以数值表示的文件属性。

findDataObject.ftCreationTime #

文件创建时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)

findDataObject.ftLastAccessTime #

文件最后一次访问时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)

findDataObject.ftLastWriteTime #

文件最后一次修改时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)。

findDataObject.isDir #

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

findDataObject.nFileSizeHigh #

文件长度高 32 位,
可使用 math.size64 函数合并 nFileSizeLow,nFileSizeHigh 为 64 位长整数。
使用 io.getSize 函数可直接获取文件大小。

findDataObject.nFileSizeLow #

文件长度低 32 位,
可使用 math.size64 函数合并 nFileSizeLow,nFileSizeHigh 为 64 位长整数。
使用 io.getSize 函数可直接获取文件大小。

全局常量

_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 格式