添加文件属性
参数一为文件路径
参数三可以用 | 操作符连接多个属性
成功返回新属性,失败返回null
移除件属性
参数一为文件路径
参数二可以用 | 操作符连接多个属性
成功返回新属性,失败返回null
返回文件属性,
以_FILE_ATTRIBUTE_前缀的常量标志各属性
注意:WIN10 新版存在设为隐藏文件后变只读的问题
参数为空字符串、null、不存在的路径都会 返回 -1
清空目录但不删除目录自身。
可选用参数 @2 指定要删除的子文件或子目录通配符。
如果参数 @1 指定的不是目录,则忽略不操作
复制文件或目录,
此函数失败返回 false 时可用 fsys.opError 获取错误代码
注意:包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看
复制文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。
如果目标路径已存在或源路径含通配符则复制到目标目录下面,
否则复制文件或目录到参数 @2 指定的目标路径。
如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息
创建目录并返回创建成功的完整文件路径
可创建多层目录,参数二可选
创建参数指定文件路径的父目录。
删除文件或目录,成功返回 true。
此函数失败返回 false 时可用 fsys.opError 获取错误代码。
此函数支持删除非空目录。
仅删除空目录请改用 ::Kernel32.RemoveDirectory( io.fullpath(dirPath) )。
删除含畸形路径的目录请改用 fsys.remove (需导入 fsys.remove 库)。
删除文件或目录,成功返回 true。
路径参数可以是多个路径组成的数组,其他参数可选。
可删除非空目录,文件名支持通配符
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息
如果参数 @1 指定的路径是一个存在的空目录,则删除该目录。
成功则返回 true,失败返回 false。
可使用 ..lasterr 获取错误原因。
删除文件或目录,成功返回true,
此函数失败返回 false 时可用 fsys.opError 获取错误代码
删除文件或目录,成功返回true,
路径参数只能是字符串,其他参数可选
如果删除失败,则在下次系统重启时删除文件,
重启删除目录之前必须先清空目录,
重启删除文件的顺序与调用时的顺序相同
for i,filename in fsys.each("/",,"*.*","file"){
/*创建一个适用于 for in 语句的迭代器,
用于遍历参数 @1 指定目录下的文件或目录名,不搜索子目录。
调用参数:
- 参数 @1 必须指定搜索目录。
- 可选参数 @2 使用模式匹配语法匹配文件名,
- 可选参数 @3 默认值是通配符`*.*`,也可以传入包含多个通配符的数组
- 可选参数 @4 指定为 "file" 仅遍历文件,指定为 "dir" 仅遍历目录,不指定则选遍历文件后遍历目录。
迭代变量:
- idx 数组索引值
- filename 文件名或者目录名*/
}
递归搜索目录下的全部文件。
fsys.enum( "/要搜索的目标目录路径", "*.*",,
function(dirPath,dirName){
/*处理每个子目录前首先调用此函数,返回false跳过该目录*/
return false;
}
);
fsys.enum( "/要搜索的目标目录路径", "*.*",
function(dir,filename,fullpath,findData){
if(filename){
io.print("发现文件:"+filename,"完整路径:"+fullpath,"当前目录完整路径"+dir)
/*可使用 return false 退出枚举文件过程*/
}
else{
io.print( "发现目录,目录名称(非完整路径):" + dir )
}
}
,/*如果此参数为false则忽略子目录*/
);
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;
}
);
如果参数 @1 指定文件或目录路径,
则获取该路径的 WIN32_FIND_DATA,失败返回 null。
可用于获取文件时间、大小、显示名称等信息。
未指定参数时直接返回 WIN32_FIND_DATA。
该函数参数支持math.size64支持的所有参数类型
转换字节长度到适合的最大单位表示的文本,
单位使用 bytes,KB,MB,GB等
转换字节长度到适合的最大单位( bytes,KB,MB,GB等 )
低位用于表示4GB以下的长度,高位以4GB为最小单位表示长度
转换为完整路径。此函数已废弃,请改用 io.fullpath 函数。
获取当前目录。
当前目录易被改动,导致相对路径(例如 "./res/")位置变化。
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠,
例如:(例如 "/res/")。
很多组件(例如文件对话框)都可能会悄悄改变当前目录
返回应用程序所在分区,以冒号结束
返回参数 @1 传入路径的文件后缀名。
此函数返回的后缀名已转换为小写,并且不包含前面的.符号。
如果文件路径无后缀名则返回 null 空值。
用 io.splitpath(path).ext 也可取后缀名,区别包含.且未转为小写。
返回路径的所指向的文件名(或目录名称)
返回指定路径的父目录
获取特殊文件夹。
参数 @1 使用 _CSIDL 开头的常量指定特殊文件夹的 CSIDL 标识,
省略参数 @1 则默认值获取桌面目录。
可选参数 @2 指定是否将 PIDL 转换为路径返回,也可以是一个用于拼接的相对路径
参数 @2 指定为false,则返回原始 PIDL 句柄。
可选使用参数 @3 指定访问令牌,用于修改用户目录。
io.getSpecial 函数的功能与此函数相同,
但 io.getSpecial 可指定多个用于拼接的文件路径参数,并且不能返回 PIDL。
fsys.knownFolder 可用于获取更多已知的特殊文件夹
获取默认用户的特殊文件夹,
参数 @1 使用 _CSIDL 开头的常量指定特殊文件夹的 CSIDL 标识,
参数用法同 fsys.getSpecial,不同的是访问令牌默认指定为 default 用户,
注意 VISTA 以后的系统在此目录下创建文件或目录需要管理权限
返回系统目录
可选在参数中指定子路径并返回完整路径
返回临时目录,
注意拼接目录与子路径应当使用 io.joinpath 函数
获取临时文件路径应当改用 io.tmpname 函数
返回文件时间,返回值为包含以下字段的的表对象:
返回windows目录
可选在参数中指定子路径并返回完整路径
for m in fsys.gmatch( ,"./*指定模式串,
用于在参数 @1 指定的文件中循环全局搜索符合条件的字符串,
有几个匹配分组迭代器返回几个值,
注意表达式不能以^开始*/") {
}
路径转换为名称ID(PIDL)\路径必须存在
参数 @1 指定的文件路径是否指向一个目录。
调用 fsys.attrib 函数检查目标路径是否具有 _FILE_ATTRIBUTE_DIRECTORY 属性
参数为空字符串或 null 返回 false
包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看
参数 @1 指定的文件路径是否指向一个空目录。
如果参数不是一个存在的目录返回 false。
如果参数指定的是文件而非目录路径返回 false 。
参数 @1 指定的文件路径是否指向一个文件。
调用 fsys.attrib 函数检查目标路径是否存在且不具有 _FILE_ATTRIBUTE_DIRECTORY 属性
参数为空字符串或 null 返回 false
包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」
或 string.hex 函数查看
是否隐藏文件
调用attrib检查文件是否具有_FILE_ATTRIBUTE_HIDDEN属性
注意:WIN10 新版存在设为隐藏文件后变只读的问题
文件是否只读
调用attrib检查文件是否具有_FILE_ATTRIBUTE_READONLY属性
是否系统文件
调用attrib检查文件是否具有_FILE_ATTRIBUTE_SYSTEM属性
注意根目录不可以圆点字符开始
可追加任意个子路径参数,如果子路径是绝对路径则返回子路径
拼接时可以使用空参数,但不可全部参数为空
获取指定目录下的文件名目录名,不搜索子目录。
如果需要递归搜索子目录请改用 fsys.enum 函数。
搜索参数 @1 指定目录下的文件或目录,不搜索子目录。
返回 3 个值,分别为匹配的文件名数组、匹配的子目录数组、全部子目录数组(无论是否匹配)。
返回的数组对象使用文件名为键存放对应完整路径的值。
除参数 @1 必须指定搜索目录以外其他参数都是可选参数。
参数 @2 可用模式匹配语法指定搜索模式串,所有返回值包含的文件或目录都必须与此模式匹配。
参数 @3 默认值是通配符*.*,也可以传入包含多个通配符的数组,第三个返回值不受通配符影响。
转换为完整路径,并将短文件名转换为长文件名
移动文件或目录。
此函数失败返回 false 时可用 fsys.opError 获取错误代码
移动文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。
如果目标路径已存在或源路径含通配符则移动到目标目录下面,
否则复制文件或目录到参数 @2 指定的目标路径。
如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息
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 库函数 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
名称ID(PIDL)转换为路径
重命名文件或目录,
此函数失败返回 false 时可用 fsys.opError 获取错误代码
重命名文件或目录,其他参数可选
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0
则显示操作界面与错误信息
替换文件内容,
查找串支持模式匹配,\支持所有string.replace函数支持的替换串格式,
不指定替换次数则替换所有匹配串
成功返回替换次数,否则返回 null
查找文件。
检查程序根目录、当前工作目录、系统目录
是否包含指定文件,找到则返回文件完整路径。
不搜寻子目录,参数 @1 支持 "*","?" 等通配符。
检查一个或多个目录下是否包含指定文件
如果存在返回完整路径,否则返回 null。
不搜寻子目录,参数 @1 支持 "*","?" 等通配符。
在指定目录以及其子目录下搜寻指定文件,
如果存在返回完整路径,否则返回 null。
内部调用 fsys.enum 查找,参数 @1 支持 "*","?" 等通配符
设置文件属性
设置当前目录。
当前目录易被改动,导致相对路径(例如 "./res/")位置变化。
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠,
例如:(例如 "/res/")。
很多组件(例如文件对话框)都可能会悄悄改变当前目录
转为符合 8.3 格式短路径。
如果文件名符合 8.3 格式且包含空格(例如目录名不超过 8 个字符),则不会去除空格。
如果文件不存在,返回空值。
短文件名指向会因实际文件数变更,所以不能把短路径存入数据库
且并不保证会去除空格。
创建 process 对象或调用类似函数时,
用数组或多参数指定启动参数可自动处理包含空格的路径。
0x1f
0x21
0x22
0x20
0x15
8.3 格式文件名。
文件名。
以数值表示的文件属性。
文件创建时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)
文件最后一次访问时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)
文件最后一次修改时间(UTC 时间), ::FILETIME 结构体。
使用 fsys.getTime 函数可直接获取文件时间(time 对象)。
是否目录,
仅在 fsys.enum 的回调参数中有效
文件长度高 32 位,
可使用 math.size64 函数合并 nFileSizeLow,nFileSizeHigh 为 64 位长整数。
使用 io.getSize 函数可直接获取文件大小。
文件长度低 32 位,
可使用 math.size64 函数合并 nFileSizeLow,nFileSizeHigh 为 64 位长整数。
使用 io.getSize 函数可直接获取文件大小。
0x1f
0x21
0x22
0x20
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