# fsys 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.WIN32_FIND_DATA <a id="fsys.WIN32_FIND_DATA" href="#fsys.WIN32_FIND_DATA">&#x23;</a>
[返回对象:findDataObject](#findDataObject)

### fsys.attrib("字符串参数",/*移除*/,_FILE_ATTRIBUTE/*多个属性用 | 链接*/) <a id="fsys.attrib" href="#fsys.attrib">&#x23;</a>
添加文件属性  
参数一为文件路径  
参数三可以用 | 操作符连接多个属性  
成功返回新属性,失败返回null

### fsys.attrib("字符串参数",_FILE_ATTRIBUTE/*多个属性用 | 链接*/) <a id="fsys.attrib" href="#fsys.attrib">&#x23;</a>
移除件属性  
参数一为文件路径  
参数二可以用 | 操作符连接多个属性  
成功返回新属性,失败返回null

### fsys.attrib(文件路径) <a id="fsys.attrib" href="#fsys.attrib">&#x23;</a>
返回文件属性,  
以_FILE_ATTRIBUTE_前缀的常量标志各属性  
注意:WIN10 新版存在设为隐藏文件后变只读的问题  
参数为空字符串、null、不存在的路径都会 返回 -1

### fsys.clear("路径","*.*") <a id="fsys.clear" href="#fsys.clear">&#x23;</a>
清空目录但不删除目录自身。  
可选用参数 @2 指定要删除的子文件或子目录通配符。  

如果参数 @1 指定的不是目录，则忽略不操作

### fsys.copy <a id="fsys.copy" href="#fsys.copy">&#x23;</a>
复制文件或目录,  
此函数失败返回 false 时可用 fsys.lasterr 函数获取错误信息与代码  

注意：包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」  
或 string.hex 函数查看

### fsys.copy(源路径,目标路径,FOF选项,显示进度,父窗口句柄) <a id="fsys.copy" href="#fsys.copy">&#x23;</a>
复制文件或目录,  
源路径参数可以是多个路径组成的数组,其他参数可选。  
如果目标路径已存在或源路径含通配符则复制到目标目录下面,  
否则复制文件或目录到参数 @2 指定的目标路径。  

如果目标路径的父目录可能不存在，请先用 io.createDir 创建该目录  

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0  
则显示操作界面与错误信息

### fsys.createDir("目录路径",是否清空重建) <a id="fsys.createDir" href="#fsys.createDir">&#x23;</a>
创建目录并返回创建成功的完整文件路径  
可创建多层目录,参数二可选

### fsys.createParentDir(文件路径) <a id="fsys.createParentDir" href="#fsys.createParentDir">&#x23;</a>
创建参数指定文件路径的父目录。

### fsys.delete <a id="fsys.delete" href="#fsys.delete">&#x23;</a>
删除文件或目录,成功返回 true。  
此函数失败返回 false 时可用 fsys.lasterr 函数获取错误信息与代码。  
此函数支持删除非空目录。  
仅删除空目录请改用 `::Kernel32.RemoveDirectory( io.fullpath(dirPath) )`。  
删除含畸形路径的目录请改用 fsys.remove （需导入 fsys.remove 库）。

### fsys.delete(path,allowUndo,progressTitle,hwndOwner) <a id="fsys.delete" href="#fsys.delete">&#x23;</a>
删除文件或目录，成功返回 true。  
参数 @2 如果指定布尔值 `true` 则删等价于 `0x654/*_FOF_ALLOWUNDO | _FOF_NO_UI*/`（删除到回收站）  
@参数 @progressTitle 指定进度窗口标题则会显示操作进度。

### fsys.delete(path,opFlags,progressTitle,hwndOwner) <a id="fsys.delete" href="#fsys.delete">&#x23;</a>
删除文件或目录，成功返回 true。  
参数 path 可以是多个路径组成的数组，其他参数可选。  
可删除非空目录,文件名支持通配符  

参数 @opFlags（_FOF_ 前缀常量组合）为 0 或 不指定该选项但 fsys.opFlags 为 0  
则显示操作界面与错误信息。  
@参数 @progressTitle 指定进度窗口标题则会显示操作进度

### fsys.deleteEmptyDir(空目录路径) <a id="fsys.deleteEmptyDir" href="#fsys.deleteEmptyDir">&#x23;</a>
如果参数 @1 指定的路径是一个存在的空目录，则删除该目录。  
成功则返回 true，失败返回 false。  
可使用 ..lasterr 获取错误原因。

### fsys.deleteEx <a id="fsys.deleteEx" href="#fsys.deleteEx">&#x23;</a>
删除文件或目录,成功返回 true,  
此函数失败返回 false 时可用 fsys.lasterr 函数获取错误信息与代码

### fsys.deleteEx(path,allowUndo,progressTitle,hwndOwne) <a id="fsys.deleteEx" href="#fsys.deleteEx">&#x23;</a>
删除文件或目录,成功返回 true,  
参数 @path 只能是字符串,其他参数可选（用法与 fsys.delete 相同）  
如果删除失败,则在下次系统重启时删除文件,  
重启删除目录之前必须先清空目录,  
重启删除文件的顺序与调用时的顺序相同

### fsys.each(dir,filePattern,fileMask,type) <a id="fsys.each" href="#fsys.each">&#x23;</a>

```aardio
for i,filename,fullpath in fsys.each("/",,"*.*","file"){  
	/*创建一个适用于 for in 语句的迭代器，  
用于遍历参数 @dir 指定目录下的文件或目录名，不搜索子目录。  

调用参数：  
- 参数 @dir 必须指定搜索目录。  
- 可选参数 @filePattern 使用模式匹配语法匹配文件名，  
- 可选参数 @fileMask 可指定通配符数组或以`|`分隔多个通配符的字符串（默认为`*.*`）  
- 可选参数 @type 指定为 "file" 仅遍历文件，指定为 "dir" 仅遍历目录，不指定则选遍历文件后遍历目录。  

迭代变量：  
- idx 数组索引值  
- filename 文件名或者目录名*/  
}
```

### fsys.enum <a id="fsys.enum" href="#fsys.enum">&#x23;</a>
递归枚举目录下的全部文件。

### fsys.enum(dir,fileMask,,subdirFilter) <a id="fsys.enum" href="#fsys.enum">&#x23;</a>

```aardio
fsys.enum( "/要搜索的目标目录路径",["*.*"],,  
	function(dirPath,dirName){  
		/*处理每个子目录前首先调用此函数，返回 false 跳过该目录*/  
		return false;  
	}   
);
```

### fsys.enum(dir,fileMask,callbak,recursive) <a id="fsys.enum" href="#fsys.enum">&#x23;</a>

```aardio
fsys.enum( "/要搜索的目标目录路径",["*.*"],  
	function(dir,filename,fullpath,findData){   
		if(filename){   
           	print("发现文件："+filename,"完整路径："+fullpath,"当前目录完整路径"+dir)  
           	/*参数 @fileMask 可指定字符串（可用`|`线分隔多个通配符）或者字符串数组（多个通配符）。  
可使用 return false 退出枚举文件过程*/  
		}  
		else{  
			print( "发现目录，目录名称（非完整路径）：" + dir )  
		}  
	}   
	,/*如果此参数为 false 则忽略子目录*/  
);
```

### fsys.enum(dir,fileMask,callbak,subdirFilter) <a id="fsys.enum" href="#fsys.enum">&#x23;</a>

```aardio
fsys.enum( "/要搜索的目标目录路径",["*.*"],  
	function(dir,filename,fullpath,findData){   
		if(filename){   
           	print("发现文件："+filename,"完整路径："+fullpath)/*可使用 return false 退出枚举文件过程*/  
		}  
		else{  
			print( "发现目录：" + dir )  
		}  
	},  
	function(dirPath,dirName){  
		/*处理每个子目录前首先调用此函数，返回 false 跳过该目录*/  
		return true;  
	}   
);
```

### fsys.findData() <a id="fsys.findData" href="#fsys.findData">&#x23;</a>
[返回对象:findDataObject](#findDataObject)

### fsys.findData(文件路径) <a id="fsys.findData" href="#fsys.findData">&#x23;</a>
如果参数 @1 指定文件或目录路径，  
则获取该路径的 WIN32_FIND_DATA，失败返回 null。  
可用于获取文件时间、大小、显示名称等信息。  
未指定参数时直接返回 WIN32_FIND_DATA。

### fsys.formatSize <a id="fsys.formatSize" href="#fsys.formatSize">&#x23;</a>
该函数参数支持math.size64支持的所有参数类型

### fsys.formatSize(字节长度) <a id="fsys.formatSize" href="#fsys.formatSize">&#x23;</a>
转换字节长度到适合的最大单位表示的文本,  
单位使用 bytes,KB,MB,GB等

### fsys.formatSize(字节长度低位,字节长度高位) <a id="fsys.formatSize" href="#fsys.formatSize">&#x23;</a>
转换字节长度到适合的最大单位( bytes,KB,MB,GB等 )  
低位用于表示4GB以下的长度,高位以4GB为最小单位表示长度

### fsys.fullpath(路径) <a id="fsys.fullpath" href="#fsys.fullpath">&#x23;</a>
转换为完整路径。此函数已废弃，请改用 io.fullpath 函数。

### fsys.getCurDir() <a id="fsys.getCurDir" href="#fsys.getCurDir">&#x23;</a>
获取当前目录。  

当前目录易被改动，导致相对路径（例如 "./res/"）位置变化。  
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠，  
例如：（例如 "/res/"）。  
很多组件（例如文件对话框）都可能会悄悄改变当前目录

### fsys.getDrive() <a id="fsys.getDrive" href="#fsys.getDrive">&#x23;</a>
返回应用程序所在分区,以冒号结束

### fsys.getExtensionName(文件路径) <a id="fsys.getExtensionName" href="#fsys.getExtensionName">&#x23;</a>
返回参数 @1 传入路径的文件后缀名。  
此函数返回的后缀名已转换为小写，并且不包含前面的`.`符号。  
如果文件路径无后缀名则返回 null 空值。  

用 io.splitpath(path).ext 也可取后缀名，区别包含`.`且未转为小写。

### fsys.getFileName(文件路径) <a id="fsys.getFileName" href="#fsys.getFileName">&#x23;</a>
返回路径的所指向的文件名(或目录名称)

### fsys.getParentDir("字符串参数") <a id="fsys.getParentDir" href="#fsys.getParentDir">&#x23;</a>
返回指定路径的父目录

### fsys.getSpecial(_CSIDL) <a id="fsys.getSpecial" href="#fsys.getSpecial">&#x23;</a>
获取特殊文件夹。  
参数 @1 使用 _CSIDL 开头的常量指定特殊文件夹的 CSIDL 标识,  
省略参数 @1 则默认值获取桌面目录。  
可选参数 @2 指定是否将 PIDL 转换为路径返回,也可以是一个用于拼接的相对路径  
参数 @2 指定为false,则返回原始 PIDL 句柄。  
可选使用参数 @3 指定访问令牌，用于修改用户目录。  

io.getSpecial 函数的功能与此函数相同，  
但 io.getSpecial 可指定多个用于拼接的文件路径参数，并且不能返回 PIDL。  

fsys.knownFolder 可用于获取更多已知的特殊文件夹

### fsys.getSpecialDefault(_CSIDL) <a id="fsys.getSpecialDefault" href="#fsys.getSpecialDefault">&#x23;</a>
获取默认用户的特殊文件夹,  
参数 @1 使用 _CSIDL 开头的常量指定特殊文件夹的 CSIDL 标识,  
参数用法同 fsys.getSpecial,不同的是访问令牌默认指定为 default 用户,  
注意 VISTA 以后的系统在此目录下创建文件或目录需要管理权限

### fsys.getSysDir() <a id="fsys.getSysDir" href="#fsys.getSysDir">&#x23;</a>
返回系统目录  
可选在参数中指定子路径并返回完整路径

### fsys.getTempDir() <a id="fsys.getTempDir" href="#fsys.getTempDir">&#x23;</a>
返回临时目录,  
注意拼接目录与子路径应当使用 io.joinpath 函数  
获取临时文件路径应当改用 io.tmpname 函数

### fsys.getTime() <a id="fsys.getTime" href="#fsys.getTime">&#x23;</a>
[返回对象:filetimesObject](#filetimesObject)

### fsys.getTime(/*文件或目录路径*) <a id="fsys.getTime" href="#fsys.getTime">&#x23;</a>
返回文件时间，返回值为包含以下字段的的表对象：  
- creation 创建时间  
- access 最后修改时间  
- write 最后访问时间  
所有返回时间者是 time 对象，使用 UTC 标准时间。

### fsys.getWinDir() <a id="fsys.getWinDir" href="#fsys.getWinDir">&#x23;</a>
返回windows目录  
可选在参数中指定子路径并返回完整路径

### fsys.gmatch(文件路径,查找模式串) <a id="fsys.gmatch" href="#fsys.gmatch">&#x23;</a>

```aardio
for m in fsys.gmatch( ,"./*指定模式串,  
用于在参数 @1 指定的文件中循环全局搜索符合条件的字符串,  
有几个匹配分组迭代器返回几个值,  
注意表达式不能以^开始*/") {   

}
```

### fsys.idListFromPath(路径) <a id="fsys.idListFromPath" href="#fsys.idListFromPath">&#x23;</a>
路径转换为名称ID(PIDL)\路径必须存在

### fsys.isDir(路径) <a id="fsys.isDir" href="#fsys.isDir">&#x23;</a>
参数 @1 指定的文件路径是否指向一个目录。  
调用 fsys.attrib 函数检查目标路径是否具有 _FILE_ATTRIBUTE_DIRECTORY 属性  
参数为空字符串或 null 返回 false  

包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」  
或 string.hex 函数查看

### fsys.isEmptyDir(路径) <a id="fsys.isEmptyDir" href="#fsys.isEmptyDir">&#x23;</a>
参数 @1 指定的文件路径是否指向一个空目录。  
如果参数不是一个存在的目录返回 false。  
如果参数指定的是文件而非目录路径返回 false 。

### fsys.isFile("字符串参数") <a id="fsys.isFile" href="#fsys.isFile">&#x23;</a>
参数 @1 指定的文件路径是否指向一个文件。  
调用 fsys.attrib 函数检查目标路径是否存在且不具有 _FILE_ATTRIBUTE_DIRECTORY 属性  
参数为空字符串或 null 返回 false  

包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」  
或 string.hex 函数查看

### fsys.isHidden(文件路径) <a id="fsys.isHidden" href="#fsys.isHidden">&#x23;</a>
是否隐藏文件  
调用attrib检查文件是否具有_FILE_ATTRIBUTE_HIDDEN属性  
注意:WIN10 新版存在设为隐藏文件后变只读的问题

### fsys.isReadonly(文件路径) <a id="fsys.isReadonly" href="#fsys.isReadonly">&#x23;</a>
文件是否只读  
调用attrib检查文件是否具有_FILE_ATTRIBUTE_READONLY属性

### fsys.isSystem(文件路径) <a id="fsys.isSystem" href="#fsys.isSystem">&#x23;</a>
是否系统文件  
调用attrib检查文件是否具有_FILE_ATTRIBUTE_SYSTEM属性

### fsys.joinpath("根目录",不定个数子路径) <a id="fsys.joinpath" href="#fsys.joinpath">&#x23;</a>
注意根目录不可以圆点字符开始  
可追加任意个子路径参数,如果子路径是绝对路径则返回子路径  
拼接时可以使用空参数,但不可全部参数为空

### fsys.lasterr() <a id="fsys.lasterr" href="#fsys.lasterr">&#x23;</a>
= 返回最后一次调用 fsys 库函数 copy,move,delete,deleteEx,rename 的错误信息与错误代码。  
错误代码指的是调用 fsys.operation（SHFileOperationW）的返回值。  
可选用参数 @1 显式指定错误代码

### fsys.list <a id="fsys.list" href="#fsys.list">&#x23;</a>
获取指定目录下的文件名目录名，不搜索子目录。  
如果需要递归枚举子目录请改用 fsys.enum 函数。

### fsys.list(dir,filePattern,fileMask) <a id="fsys.list" href="#fsys.list">&#x23;</a>
搜索参数 @dir 指定目录下的文件或目录，不搜索子目录。  
返回 3 个值，分别为匹配的文件名数组、匹配的子目录数组、全部子目录数组（无论是否匹配）。  
返回的数组对象使用文件名为键存放对应完整路径的值。  

除参数 @dir 必须指定搜索目录以外其他参数都是可选参数。  
参数 @filePattern 可用模式匹配语法指定搜索模式串，所有返回值包含的文件或目录都必须与此模式匹配。  
参数 @fileMask 可选指定通配符数组或以`|`分隔多个通配符的字符串（默认为`*.*`），  
第三个返回值不受通配符影响。

### fsys.longpath(路径) <a id="fsys.longpath" href="#fsys.longpath">&#x23;</a>
转换为完整路径,并将短文件名转换为长文件名

### fsys.match(文件路径,查找模式串) <a id="fsys.match" href="#fsys.match">&#x23;</a>
调用 string.match 搜索指定文件的内容。  
返回匹配结果，如果模式串指定了捕获组则返回一个或多个捕获组（多返回值）

### fsys.move <a id="fsys.move" href="#fsys.move">&#x23;</a>
移动文件或目录。  
此函数失败返回 false 时可用 fsys.lasterr 函数获取错误信息与代码

### fsys.move(源路径,目标路径,FOF选项,显示进度,父窗口句柄) <a id="fsys.move" href="#fsys.move">&#x23;</a>
移动文件或目录,  
源路径参数可以是多个路径组成的数组,其他参数可选。  
如果目标路径已存在或源路径含通配符则移动到目标目录下面,  
否则复制文件或目录到参数 @2 指定的目标路径。  

如果目标路径的父目录可能不存在，请先用 io.createDir 创建该目录  

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0  
则显示操作界面与错误信息

### fsys.opFlags <a id="fsys.opFlags" href="#fsys.opFlags">&#x23;</a>
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) <a id="fsys.pathFromIdList" href="#fsys.pathFromIdList">&#x23;</a>
名称ID(PIDL)转换为路径

### fsys.rename <a id="fsys.rename" href="#fsys.rename">&#x23;</a>
重命名文件或目录,  
此函数失败返回 false 时可用 fsys.lasterr 函数获取错误信息与代码

### fsys.rename(源路径,目标路径,FOF选项) <a id="fsys.rename" href="#fsys.rename">&#x23;</a>
重命名文件或目录,其他参数可选  

FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0  
则显示操作界面与错误信息

### fsys.replace(文件路径,查找串,替换串,替换次数) <a id="fsys.replace" href="#fsys.replace">&#x23;</a>
替换文件内容,  
查找串支持模式匹配,\支持所有string.replace函数支持的替换串格式,  
不指定替换次数则替换所有匹配串  

成功返回替换次数，否则返回 null

### fsys.searchFile <a id="fsys.searchFile" href="#fsys.searchFile">&#x23;</a>
查找文件。

### fsys.searchFile(文件名) <a id="fsys.searchFile" href="#fsys.searchFile">&#x23;</a>
检查程序根目录、当前工作目录、系统目录  
是否包含指定文件，找到则返回文件完整路径。  
不搜寻子目录，参数 @1 支持 "*","?" 等通配符。

### fsys.searchFile(文件名,目录,...) <a id="fsys.searchFile" href="#fsys.searchFile">&#x23;</a>
检查一个或多个目录下是否包含指定文件  
如果存在返回完整路径,否则返回 null。  
不搜寻子目录，参数 @1 支持 "*","?" 等通配符。

### fsys.searchFile(文件名,目录,true) <a id="fsys.searchFile" href="#fsys.searchFile">&#x23;</a>
在指定目录以及其子目录下搜寻指定文件，  
如果存在返回完整路径,否则返回 null。  

内部调用 fsys.enum 查找，参数 @1 支持 "*","?" 等通配符

### fsys.setCurDir(目录) <a id="fsys.setCurDir" href="#fsys.setCurDir">&#x23;</a>
设置当前目录。  

当前目录易被改动，导致相对路径（例如 "./res/"）位置变化。  
路径首字符用单个斜杠或反斜杠表示「应用程序根目录」的写法更可靠，  
例如：（例如 "/res/"）。  
很多组件（例如文件对话框）都可能会悄悄改变当前目录

### fsys.shortpath(路径) <a id="fsys.shortpath" href="#fsys.shortpath">&#x23;</a>
转为符合 8.3 格式短路径。  
如果文件名符合 8.3 格式且包含空格（例如目录名不超过 8 个字符），则不会去除空格。  
如果文件不存在,返回空值。  

短文件名指向会因实际文件数变更,所以不能把短路径存入数据库  
且并不保证会去除空格。   
创建 process 对象或调用类似函数时，  
用数组或多参数指定启动参数可自动处理包含空格的路径。

## 全局对象 成员列表 <a id="global" href="#global">&#x23;</a>

### _CSIDL_COMMON_FAVORITES <a id="_CSIDL_COMMON_FAVORITES" href="#_CSIDL_COMMON_FAVORITES">&#x23;</a>

```aardio
0x1f
```

### _CSIDL_COOKIES <a id="_CSIDL_COOKIES" href="#_CSIDL_COOKIES">&#x23;</a>

```aardio
0x21
```

### _CSIDL_HISTORY <a id="_CSIDL_HISTORY" href="#_CSIDL_HISTORY">&#x23;</a>

```aardio
0x22
```

### _CSIDL_INTERNET_CACHE <a id="_CSIDL_INTERNET_CACHE" href="#_CSIDL_INTERNET_CACHE">&#x23;</a>

```aardio
0x20
```

### _CSIDL_TEMPLATES <a id="_CSIDL_TEMPLATES" href="#_CSIDL_TEMPLATES">&#x23;</a>

```aardio
0x15
```

## findDataObject 成员列表 <a id="findDataObject" href="#findDataObject">&#x23;</a>

### findDataObject.cAlternateFileName <a id="findDataObject.cAlternateFileName" href="#findDataObject.cAlternateFileName">&#x23;</a>
8.3 格式文件名。

### findDataObject.cFileName <a id="findDataObject.cFileName" href="#findDataObject.cFileName">&#x23;</a>
文件名。

### findDataObject.dwFileAttributes <a id="findDataObject.dwFileAttributes" href="#findDataObject.dwFileAttributes">&#x23;</a>
以数值表示的文件属性。

### findDataObject.ftCreationTime <a id="findDataObject.ftCreationTime" href="#findDataObject.ftCreationTime">&#x23;</a>
文件创建时间（UTC 时间）， ::FILETIME 结构体。  
使用 fsys.getTime 函数可直接获取文件时间（time 对象）

### findDataObject.ftLastAccessTime <a id="findDataObject.ftLastAccessTime" href="#findDataObject.ftLastAccessTime">&#x23;</a>
文件最后一次访问时间（UTC 时间）， ::FILETIME 结构体。  
使用 fsys.getTime 函数可直接获取文件时间（time 对象）

### findDataObject.ftLastWriteTime <a id="findDataObject.ftLastWriteTime" href="#findDataObject.ftLastWriteTime">&#x23;</a>
文件最后一次修改时间（UTC 时间）， ::FILETIME 结构体。  
使用 fsys.getTime 函数可直接获取文件时间（time 对象）。

### findDataObject.isDir <a id="findDataObject.isDir" href="#findDataObject.isDir">&#x23;</a>
是否目录，  
仅在 fsys.enum 的回调参数中有效

### findDataObject.nFileSizeHigh <a id="findDataObject.nFileSizeHigh" href="#findDataObject.nFileSizeHigh">&#x23;</a>
文件长度高 32 位，  
可使用 math.size64 函数合并 nFileSizeLow，nFileSizeHigh 为 64 位长整数。  
使用 io.getSize 函数可直接获取文件大小。

### findDataObject.nFileSizeLow <a id="findDataObject.nFileSizeLow" href="#findDataObject.nFileSizeLow">&#x23;</a>
文件长度低 32 位，  
可使用 math.size64 函数合并 nFileSizeLow，nFileSizeHigh 为 64 位长整数。  
使用 io.getSize 函数可直接获取文件大小。

### 全局常量

### _CSIDL_COMMON_FAVORITES <a id="_CSIDL_COMMON_FAVORITES" href="#_CSIDL_COMMON_FAVORITES">&#x23;</a>
```aardio
0x1f
```

### _CSIDL_COOKIES <a id="_CSIDL_COOKIES" href="#_CSIDL_COOKIES">&#x23;</a>
```aardio
0x21
```

### _CSIDL_HISTORY <a id="_CSIDL_HISTORY" href="#_CSIDL_HISTORY">&#x23;</a>
```aardio
0x22
```

### _CSIDL_INTERNET_CACHE <a id="_CSIDL_INTERNET_CACHE" href="#_CSIDL_INTERNET_CACHE">&#x23;</a>
```aardio
0x20
```

### _CSIDL_TEMPLATES <a id="_CSIDL_TEMPLATES" href="#_CSIDL_TEMPLATES">&#x23;</a>
```aardio
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=5  
_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=8  
_CSIDL_RESOURCES=0x38  
_CSIDL_RESOURCES_LOCALIZED=0x39  
_CSIDL_SENDTO=9  
_CSIDL_STARTMENU=0xb  
_CSIDL_STARTUP=7  
_CSIDL_SYSTEM=0x25  
_CSIDL_SYSTEMX86=0x29  
_CSIDL_WINDOWS=0x24  
_FOF_ALLOWUNDO=0x40  
_FOF_CONFIRMMOUSE=2  
_FOF_FILESONLY=0x80  
_FOF_NOCONFIRMATION=0x10  
_FOF_NOCONFIRMMKDIR=0x200  
_FOF_NOCOPYSECURITYATTRIBS=0x0800  
_FOF_NOERRORUI=0x0400  
_FOF_NORECURSION=0x1000  
_FOF_NO_UI=0x614  
_FOF_RENAMEONCOLLISION=8  
_FOF_SILENT=4  
_FOF_SIMPLEPROGRESS=0x100  
_FOF_WANTMAPPINGHANDLE=0x20  
_MAX_WPATH_BYTES=0x208  
