使用。net FileSystemWatcher监听新文件

33视图(30天)
你好,
我想写一个简单的程序,它能够连续运行,监听FileSystemWatcher事件即一个新文件已经出现在一个文件夹。当到达我想过程文件。下面是代码,我一直玩:
函数ImageSorter
%开始为文件新通知侦听器
fileObj = System.IO.FileSystemWatcher (“C: \日本\”);
fileObj。EnableRaisingEvents = true;
l1 = addlistener (fileObj,“创建”,@eventhandlerChanged);
%现在我想让程序停止和监听的事件并不是这样
%继续。
h =图(“可见”,“关闭”);
等待(h);
删除(l1);
结束
函数arg eventhandlerChanged(源)
arg.FullPath
结束
如果我的末尾插入一个断点ImageSorter程序然后它的工作原理和eventhandlerChanged函数被调用时将出现一个新的文件在文件夹C: \并建置。
我怎么使函数停止运行结束后,等待听事件吗?
乔纳森

接受的答案

马修·惠特克
马修·惠特克 2011年6月21日
乔纳森,这里是如何做到这一点的一个例子。注意您需要监听事件,而不是创建事件改变
函数FileWatch (pathToWatch)
txtDetectedFiles = createFigure;
fileObj = System.IO.FileSystemWatcher (pathToWatch);
fileObj。EnableRaisingEvents = true;
changeListener = addlistener (fileObj,“改变”,@onChange);%需要保持在范围
函数txtDetectedFiles = createFigure
figHdl =图(“名字”,“FileWatcher”,
菜单条的,“没有”,
“工具栏”,“没有”,
“NumberTitle”,“关闭”,
“单位”,“归一化”,
“位置”,0.4,0.4,0.4,0.2);
uicontrol (“父”figHdl,
“风格”,“文本”,
“单位”,“归一化”,
“位置”,(0.1,0.9,0.8,0.08),
“字符串”,(”路径看,“pathToWatch]);
uicontrol (“父”figHdl,
“风格”,“按钮”,
“字符串”,“写一个文件看路径。”,
“单位”,“归一化”,
“位置”,(0.1,0.6,0.5,0.2),
“回调”,@cmdWriteFile);
txtDetectedFiles = uicontrol (“父”figHdl,
“风格”,“编辑”,
“启用”,“不活跃”,
“单位”,“归一化”,
“位置”,(0.1,0.05,0.8,0.45),
“马克斯”3);
结束% createFigure
函数cmdWriteFile(变长度输入宗量)
%在看文件夹中创建一个简单的文本文件
tName = tempname;
[~,tName] = fileparts (tName);
帧= fullfile (pathToWatch tName,' . txt ']);
dlmwrite(帧,1:5);
结束% cmdWriteFile
函数onChange (~ evt)
existStr =得到(txtDetectedFiles,“字符串”);
如果isempty (existStr)
existStr = {};
结束%如果
existStr{长度(existStr) + 1} = [“新文件发现:”char (evt.FullPath.ToString ()));
集(txtDetectedFiles,“字符串”,existStr);
结束% onChange
结束% FileWatch
3评论
Jagatpreet
Jagatpreet 2013年3月13日
你的例子是有很大的帮助。它提供了我回答两个问题:
如何使用GUI,一边事件吗
如何看文件系统和以编程方式添加新文件时发送通知。
之前我在看文件使用定时器函数非常感谢

登录置评。

答案(1)

E
E 2016年4月7日
你好,我尝试使用这段代码,但我不需要按钮,创建新的文件所以我说以下行:
uicontrol (“父”figHdl,
“风格”,“按钮”,
“字符串”,“写一个文件看路径。”,
“单位”,“归一化”,
“位置”,(0.1,0.6,0.5,0.2),
“回调”,@cmdWriteFile);
及其对应的回调:
函数cmdWriteFile(变长度输入宗量)
%在看文件夹中创建一个简单的文本文件
tName = tempname;
[~,tName] = fileparts (tName);
帧= fullfile (pathToWatch tName,' . txt ']);
dlmwrite(帧,1:5);
结束% cmdWriteFile
这样做之后,听者不听和onCahnge()不是运行在改变…
任何ide是如何我的行为与听者有关吗?
谢谢!
1评论
董先生
董先生 2019年12月25日
我也有同样的问题,你怎么处理?

登录置评。

类别

找到更多的在添加自定义文档帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!