关于为什么选 aardio 来开发:一是 aardio 写这类程序很简单、快捷,十来分钟就能完成类似的小需求,因为 aardio 范例丰富,今天我写的这个就是参考的 aardio 范例 ~/文件操作/监视文件/监视文件 fsys.dirWatcher
;再就是 aardio 写出来的东西体积小(方便网络传输)、兼容性好(基本覆盖所有Windows系统)。
运行截图
源码
import fonts.fontAwesome;
import win.dlg.message;
import console;
import process;
import fsys;
import fsys.dirWatcher;
import fsys.dlg;
import win.ui;
/*DSG{{*/
var winform = win.form(text="监视文件+自动备份";right=984;bottom=589;bgcolor=16777215)
winform.add(
btnWatch={cls="plus";text="点击开始监视——自动备份监视目录下发生变化的文件";left=10;top=149;right=453;bottom=180;align="left";color=15570468;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome')};iconText='\uF204';notify=1;tabstop=1;textPadding={left=30};z=1};
btn_select_save_dir={cls="plus";text="选择备份存储位置";left=794;top=84;right=975;bottom=114;align="left";bgcolor=-1206748;color=16777215;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=20}};iconText='\uF045';notify=1;textPadding={left=39};z=4};
btn_select_watch_dir={cls="plus";text="选择监视目录";left=827;top=29;right=975;bottom=59;align="left";bgcolor=-1206748;color=16777215;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=20}};iconText='\uF07C';notify=1;textPadding={left=39};z=6};
editChange={cls="edit";left=10;top=196;right=975;bottom=580;bgcolor=3682597;color=16439726;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;readonly=1;z=2};
edit_save_dir={cls="plus";left=10;top=88;right=795;bottom=114;align="left";border={bottom=1;color=-6908266};dl=1;dr=1;dt=1;editable=1;font=LOGFONT(h=-16);textPadding={left=10;right=10};z=3};
edit_watch_dir={cls="plus";left=10;top=33;right=828;bottom=59;align="left";border={bottom=1;color=-6908266};dl=1;dr=1;dt=1;editable=1;font=LOGFONT(h=-16);textPadding={left=10;right=10};z=5}
)
/*}}*/
winform.btn_select_watch_dir.skin({
background={
active=0xFF1867A3;
default=0xFF2496ED
};
color={
default=0xFFFFFFFF;
disabled=0xFF6D6D6D
}
})
winform.btn_select_save_dir.skin({
background={
active=0xFF1867A3;
default=0xFF2496ED
};
color={
default=0xFFFFFFFF;
disabled=0xFF6D6D6D
}
})
winform.btnWatch.skin({
color={
default=0xFF2496ED;
disabled=0xEE666666
};
})
WATCH_DIR = null;
SAVE_DIR = null;
//选择监视目录
winform.btn_select_watch_dir.oncommand = function(id,event){
WATCH_DIR = fsys.dlg.opendir(,winform.hwnd,"请选择监视目录");
winform.edit_watch_dir.text = WATCH_DIR != null ? WATCH_DIR : winform.edit_watch_dir.text;
}
//选择存储目录
winform.btn_select_save_dir.oncommand = function(id,event){
SAVE_DIR = fsys.dlg.opendir(,winform.hwnd,"请选择存储目录");
winform.edit_save_dir.text = SAVE_DIR != null ? SAVE_DIR : winform.edit_save_dir.text;
}
//文件监控
watchStart = function(owner){
WATCH_DIR = winform.edit_watch_dir.text;
SAVE_DIR = winform.edit_save_dir.text;
if(0 == #WATCH_DIR or 0 == #SAVE_DIR){
winform.msgInfo("监视目录/存储目录不能为空!");
return;
}
if(false == owner.checked){
owner.text = "点击开始监视——自动备份监视目录下发生变化的文件"
if(!winform.thrdWatcher) return;
winform.thrdWatcher.close(); //停止监视文件
return;
}
else{
owner.text = "已开启监视"
owner.skin(checked={iconText='\uF205'})
}
if( WATCH_DIR ) {
//创建监视线程
winform.thrdWatcher = fsys.dirWatcher.thread(
function(filename,action,actionText){
var fullname = WATCH_DIR+'\\'+filename;
select(action) {
case 1 {//添加
}
case 2 {//移除
}
case 3 {//修改
fsys.copy(fullname, SAVE_DIR);
winform.editChange.appendText(actionText," -> ",fullname,'\r\n')
}
case 4 {//重命名--原名
}
case 5 {//重命名--新名
}
else {}
}
}, WATCH_DIR);
}
}
winform.btnWatch.oncommand = function(id,event){
try{
watchStart(owner);
}
catch(e){
winform.msgErr(e);
}
}
winform.show();
win.loopMessage();
return winform;
没有回复内容