# fsys.dirWatcher 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.dirWatcher() <a id="fsys.dirWatcher" href="#fsys.dirWatcher">&#x23;</a>
[返回对象:dirWatcherObject](#dirWatcherObject)

### fsys.dirWatcher(directoryPath) <a id="fsys.dirWatcher" href="#fsys.dirWatcher">&#x23;</a>
创建参数 @directoryPath 指定目录的同步监视器。  
此监视器会阻塞当前线程。

### fsys.dirWatcher(directoryPath,onFileChange,flags,subTree) <a id="fsys.dirWatcher" href="#fsys.dirWatcher">&#x23;</a>
创建目录变更异步监视器。  
1. 参数 @directoryPath 指定要监视的目录。  
2. 参数 @onFileChange 必须指定文件变更事件回调函数。  

	此参数则会调用 fsys.dirWatcher.thread 创建后台监视线程，   
	只能在界面线程创建目录的异步监视器，因为回调依赖窗口消息循环。  
	回调函数仍在当前界面线程内执行（因此不需要考虑跨线程规则）。  

	回调参数分别为: filename,action,actionText  

	* 回调参数 filename 为发生变更的文件路径，  
	* 回调参数 action 为 _FILE_ACTION_ 前缀的常量数值，  
	* 回调参数 actionText 的值为 "added" "removed" "modified" "renamed:old-name" "renamed:new-name" 之一。  

3. 参数 @flags 可选用  _FILE_NOTIFY_CHANGE_ 前缀的常量数值指定选项。  
4. 参数 @subTree 可选指定是否监视子目录。

## fsys.dirWatcher 成员列表 <a id="fsys.dirWatcher" href="#fsys.dirWatcher">&#x23;</a>

目录监视器

### fsys.dirWatcher.thread() <a id="fsys.dirWatcher.thread" href="#fsys.dirWatcher.thread">&#x23;</a>
[返回对象:fsysDirWatcherThreadObject](#fsysDirWatcherThreadObject)

### fsys.dirWatcher.thread(onFileChange,directoryPath,flags,subTree) <a id="fsys.dirWatcher.thread" href="#fsys.dirWatcher.thread">&#x23;</a>

```aardio
fsys.dirWatcher.thread(  
	function(filename,action,actionText){  

	},/*  
创建目录变更异步监视器线程。  

1. 参数 @onFileChange 必须指定文件变更事件回调函数。  
	只能在界面线程创建目录的异步监视器，因为回调依赖窗口消息循环。  
	回调函数仍在当前界面线程内执行（因此不需要考虑跨线程规则）。  

	回调参数分别为: filename,action,actionText  

	* 回调参数 filename 为发生变更的文件路径，  
	* 回调参数 action 为 _FILE_ACTION_ 前缀的常量数值，  
	* 回调参数 actionText 的值为 "added" "removed" "modified" "renamed:old-name" "renamed:new-name" 之一。  

2. 参数 @directoryPath 指定要监视的目录。  
3. 参数 @flags 可选用  _FILE_NOTIFY_CHANGE_ 前缀的常量数值指定选项。  
4. 参数 @subTree 可选指定是否监视子目录。  
*/);
```

## dirWatcherEntryObject 成员列表 <a id="dirWatcherEntryObject" href="#dirWatcherEntryObject">&#x23;</a>

### dirWatcherEntryObject.action <a id="dirWatcherEntryObject.action" href="#dirWatcherEntryObject.action">&#x23;</a>
变更类型

### dirWatcherEntryObject.actionText <a id="dirWatcherEntryObject.actionText" href="#dirWatcherEntryObject.actionText">&#x23;</a>
变更类型说明

### dirWatcherEntryObject.filename <a id="dirWatcherEntryObject.filename" href="#dirWatcherEntryObject.filename">&#x23;</a>
文件名

### dirWatcherEntryObject.filenameW <a id="dirWatcherEntryObject.filenameW" href="#dirWatcherEntryObject.filenameW">&#x23;</a>
Unicode文件名

## dirWatcherObject 成员列表 <a id="dirWatcherObject" href="#dirWatcherObject">&#x23;</a>

### dirWatcherObject.close() <a id="dirWatcherObject.close" href="#dirWatcherObject.close">&#x23;</a>
关闭同步目录监视器或者退出异步目录监视器线程。

### dirWatcherObject.eachChanges(flags,subTree) <a id="dirWatcherObject.eachChanges" href="#dirWatcherObject.eachChanges">&#x23;</a>

```aardio
for filename,action,actionText in dirWatcherObject.eachChanges(){
	print( filename,actionText,action & 0x10/*_FILE_NOTIFY_CHANGE_LAST_WRITE*/ ) 
	/*同步目录监视器可使用此迭代器遍历文件变更事件。  
迭代变量 filename,action,actionText 用法与 onFileChange 回调函数相同。*/
}
```

### dirWatcherObject.readDirectoryChanges() <a id="dirWatcherObject.readDirectoryChanges" href="#dirWatcherObject.readDirectoryChanges">&#x23;</a>
[返回对象:dirWatcherEntryObject](#dirWatcherEntryObject)

### dirWatcherObject.readDirectoryChanges(选项,是否监视子目录) <a id="dirWatcherObject.readDirectoryChanges" href="#dirWatcherObject.readDirectoryChanges">&#x23;</a>
同步目录监视器可使用此函数读取目录发生的变更。  
返回值为数组,数组成员为一个table对象  
filename字段表明变更的目录,action字段表明变更类型  
action为 _FILE_NOTIFY_CHANGE_ 前缀的常量标志

## fsysDirWatcherThreadObject 成员列表 <a id="fsysDirWatcherThreadObject" href="#fsysDirWatcherThreadObject">&#x23;</a>

### fsysDirWatcherThreadObject.close() <a id="fsysDirWatcherThreadObject.close" href="#fsysDirWatcherThreadObject.close">&#x23;</a>
退出异步目录监视器线程。

### 自动完成常量
_FILE_ACTION_ADDED=1  
_FILE_ACTION_MODIFIED=3  
_FILE_ACTION_REMOVED=2  
_FILE_ACTION_RENAMED_NEW_NAME=5  
_FILE_ACTION_RENAMED_OLD_NAME=4  
