# aardio 范例: 监视文件 fsys.dirWatcher



```aardio
//监视文件 fsys.dirWatcher

import win.ui;
/*DSG{{*/
var winform = win.form(text="监视文件 fsys.dirWatcher";right=599;bottom=399)
winform.add(
btnWatch={cls="button";text="监视目录";left=354;top=342;right=526;bottom=380;anchors={top=1;right=1};z=1};
editChange={cls="edit";left=23;top=21;right=564;bottom=322;anchors={left=1;top=1;right=1;bottom=1};edge=1;hscroll=1;multiline=1;vscroll=1;z=2}
)
/*}}*/

import process; 
import fsys.dirWatcher;
import fsys.dlg.dir;

//启动文件监控
winform.btnWatch.oncommand = function(id,event){
	
	var watchDir = fsys.dlg.dir(,winform.hwnd,"请选择要监视的目录");
	if( watchDir ) {
		winform.btnWatch.disabled = true; 
		
		/*
		创建目录变更监视器。
		监视文件的方法有很多，最佳选择是使用 fsys.dirWatcher 。
		*/
		winform.thrdWatcher = fsys.dirWatcher(watchDir,
			function(filename,action,actionText){
				/****
				filename 为变更的文件路径。
				action 为 _FILE_ACTION_ 前缀的数值常量，例如 1(_FILE_ACTION_ADDED)。
				actionText 的值为  "added" "removed" "modified" "renamed:old-name" "renamed:new-name" 其中之一。
				****/
				winform.editChange.appendText( filename," -> ",actionText,'\r\n')
			}); 
			
		process.explore( watchDir )
	}
}

import fsys.file;
import thread.event;
winform.onClose = function(hwnd,message,wParam,lParam){
	if(!winform.thrdWatcher) return; 
    winform.thrdWatcher.close(); //停止监视文件
}

winform.show();
win.loopMessage();
```

