FileSystemWatcher 远程监测文件夹事件

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qijiyuelongmen/article/details/70184011

监测路径写法:

FileSystemWatcher fsw=new FileSystemWatcher  ();

fsw.Path = @"\\127.0.0.1\aaa";

其中aaa是本机某路径下的一个文件夹,通过右键,共享后的名称,

这样就可以通过ip地址,远程监测文件夹事件了

展开阅读全文

FileSystemWatcher对象Created事件处理问题

06-23

各位大侠:rn 我想做一个文件监控程序,当监控文件夹下有新的txt文件产生时,对文件进行读写操作,完成数据读取和相关计算后把该文件转存到其它目录,原文件删除。rn 我自己写的created事件 是先获取监控文件下的所有文件,然后对文件列表中的文件进行逐个处理,最后转存txt文件。处理完成后监控文件夹应为空,等待下一时次资料的处理。rn 自己遇到的问题:rn 1、测试的时候,我往监控文件夹复制n个txt文件,结果产生了n次created事件,导致程序被重复处理了n次。rn 我想要的结果是:当有多个txt文件被创建时,在一个created事件中处理所有的文件。rn 或是每个created事件都处理相应产生的txt文件,但不知道怎样才能获取到产生created事件的相应文件的文件名。rn rn 网上还说,利用created事件对文件进行读写操作,会遇到一些异常,比如其他程序在使用,或是文件还在被创建的过程当中。网上说的解决方法也很复杂,都看不懂。我自己试了下,复制2个txt文件,在created事件中写读整个txt文件,运行正常。可能是我的txt文件比较小吧,但还是想在程序方面做相应处理。rn[code=C#]rnnamespace 文件监控入库rnrn class Programrn rn static void Main(string[] args)rn rn string MonitorPath;rn MonitorPath = System.Environment.CurrentDirectory+"\\待入库文件1";rn WatcherStrat(@MonitorPath , "*.txt");rn Console.ReadKey();rn rn private static void WatcherStrat(string path, string filter) rn rn FileSystemWatcher watcher = new FileSystemWatcher();rn watcher.Path = path; //不知道怎么设置监控多个目录rn watcher.Filter = filter;rn watcher.Created += new FileSystemEventHandler(OnCreated);rn watcher.EnableRaisingEvents = true;rn rn rn private static void OnCreated(object source, FileSystemEventArgs e)rn rn rn //获取程序当前路径和文件列表rn string filedir, filepath;rn string[] filelist;rn filedir = System.Environment.CurrentDirectory + "\\待入库文件1";rnrn DirectoryInfo dir = new DirectoryInfo(filedir); //实例化directoryInf类rn FileSystemInfo[] f = dir.GetFileSystemInfos(); //获取监控目录下的文件名称rn filelist = new string[f.Length];rn for (int i=0;i 论坛

FileSystemWatcher类中事件的问题?

02-12

代码如下:rn//开始监控rn void Button2Click(object sender, EventArgs e)rn rn if(textBox1.Text == "")rn rn MessageBox.Show("请选择监控目录");rn return;rn rn FileSystemWatcher watcher = new FileSystemWatcher();rn watcher.Path = textBox1.Text;rn watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;rn watcher.Filter = "*.txt";rn watcher.Changed += new FileSystemEventHandler(watcher_Changed); rn watcher.Deleted += new FileSystemEventHandler(watcher_Changed);rn watcher.Created += new FileSystemEventHandler(watcher_Created);rn watcher.Renamed += new RenamedEventHandler(watcher_Renamed);rn if(button2.Text == "开始监控")rn rn watcher.EnableRaisingEvents = true;rn button2.Text = "停止监控";rn rn else if(button2.Text == "停止监控")rn rn watcher.EnableRaisingEvents = false;rn button2.Text = "开始监控";rn rn rn void watcher_Created(object sender, RenamedEventArgs e)rn rn listboxAdd listboxadd = delegate()rn rn listBox1.Items.Add("创建文件:" +e.FullPath);rn ;rn listBox1.Invoke(listboxadd);rn rn void watcher_Deleted(object sender, RenamedEventArgs e)rn rn listboxAdd listboxadd = delegate()rn rn listBox1.Items.Add("删除文件:" +e.FullPath);rn ;rn listBox1.Invoke(listboxadd);rn rn void watcher_Renamed(object sender, RenamedEventArgs e)rn rn listboxAdd listboxadd = delegate()rn rn listBox1.Items.Add("文件:" + e.OldFullPath + "更名为:" +e.FullPath);rn ;rn listBox1.Invoke(listboxadd);rn rn rn void watcher_Changed(object sender, FileSystemEventArgs e)rn rn listboxAdd listboxadd = delegate()rn rn listBox1.Items.Add("修改了文件:"+ e.FullPath);rn ;rn listBox1.Invoke(listboxadd);rn rnrnrn报错:rn“watcher_Created”的重载均与委托“System.IO.FileSystemEventHandler”不匹配 (CS0123) - D:\c#\SharpDevelop Projects\FileSystemWatcher类\FileSystemWatcher类\MainForm.cs:55,23 论坛

文件夹监测——FolderWatcher

06-17

<p>rn 本课程通过一步步的实践演示,带领大家在开源项目的基础上,搭建随心所欲的物联网与智能家居平台。在过程实践中,大家会学习与应用到linux、python、云服务、图像识别、智能语音、单片机、数据库、前端开发等多方面的知识,帮助大家成为IT的全栈工程师。以实战为导向结合物联网各类知识要点学习经典框架进行项目实战,快速掌握智能家居、家庭自动化、物联网等必备基础与实战技巧。带你从零玩转智能家居,了解物联网的整体格局,将零散的知识点通过项目快速串联提升自身成就感rn</p>rn<p>rn 【更新规则】<br />rn&nbsp;视频与参考文档内容,随时更新,与最新的软件版本/云服务环境匹配。rn</p>rn<p>rn <br />rn</p>rn<p>rn 【课程特色】<br />rn1.通俗易懂,快速入门<br />rn对物联网、智能家居学习经典实践项目结合技术推导进行形象解释,实例演示。<br />rn2. Python主导,实用高效<br />rn使用物联网领域最主流语言Python及其homeassistant 开源家庭自动化框架作为课程核心工具。<br />rn3. 案例为师,实战护航<br />rn基于真实操作展示,从零开始结合homeassistant与python自创组件、树莓派或者nas完成整个案例实战。<br />rn4. 持续更新,一劳永逸<br />rn会伴随homeassistant的更新与DIY实战项目课程会支持更新下去,逐步加入更多算法与案例。rn</p>rn<p>rn <br />rn</p>rn<p>rn 【联系我们】<br />rn官方网站:https://www.hachina.io<br />rnQQ学习讨论群(仅限学员加入):741140729rn</p>rn<p>rn <img src="https://img-bss.csdn.net/201907040403375571.jpg" alt="" /> rn</p>rn<p>rn <br />rn</p>

急求:FileSystemWatcher监视文件夹的问题

11-21

我在用FileSystemWatcher组件监视本地文件夹变化的时候,我想在文件夹的文件或子文件夹变化的时候,将变化的文件或文件夹记录到一个xml文件里,要是里面有子文件夹就将子文件夹名作为xml的一个节点,里面的文件就作为这个节点的值。只有文件名而没有子文件夹的话,就默认创建一个节点(如INV2010-00001),然后将文件作为节点值rn如果我监控A目录下的变化情况,当我往这个A目录下拷贝一个文件(如:123.jpg)和一个文件夹abc(这个文件夹里有一个文件342.jpg),那么我记录到xml文件里就应该是:rn[code=XML]rnrn rn 342.jpgrn 123.jpgrn rnrn[/code]rnWindow服务部分代码:rn[code=C#]rnprotected override void OnStart(string[] args)rn rn // TODO: 在此处添加代码以启动服务。rn Watching();rn rnprivate void Watching()rn rn fileWatcher.Path = WatcherTool.GetInstance.WatchPath;rn fileWatcher.Filter = WatcherTool.GetInstance.WatchFileType;rn fileWatcher.IncludeSubdirectories = WatcherTool.GetInstance.IsIncludeSubDirectory;rn fileWatcher.Created += new FileSystemEventHandler(fileWatcher_Created);rn rnrn private void fileWatcher_Created(object sender, FileSystemEventArgs e)rn rn if (e.ChangeType == WatcherChangeTypes.Created)rn rn //E:\\XXX\\Project\\Picture\\INV2010-00012\\135555.jpgrn string fullPath = e.FullPath; //图片所在的完整路径rn string fileName = fullPath.Substring(fullPath.LastIndexOf("\\") + 1); //图片的文件名rn string fileFolder = fullPath.Substring(0, fullPath.LastIndexOf("\\") + 1);//图片所在的文件夹目录,如:D:\\images\\20101121\\rn string filePath = fileFolder.Substring(fileFolder.LastIndexOf('\\') + 1) + "\\" + fileName; //图片所在的文件夹,如:20101112\\12355.jpgrnrn WatcherTool.GetInstance.WritePictureChangeLog(filePath);rn rn rnWatcherTool类部分代码:rnpublic void WritePictureChangeLog(string fileName)rn rn char[] sp = new char[]'\\';rn string path = string.Empty;rn string file = string.Empty;rn if (fileName.IndexOfAny(sp) != -1)rn rn path = fileName.Substring(0, fileName.IndexOf('\\'));rn file = fileName.Substring(fileName.IndexOf('\\') + 1);rn rn elsern rn path = "INV" + DateTime.Now.ToString("yyyy") + "00001";rn file = fileName;rn rn XmlConfigFactory.PictureConfig.InsertMulti("PictureList/PicturePath", path, file);rn rnInsertMulti方法:rnpublic void InsertMulti(string xPath, string nodeName, string nodeValue)rn rn ClearCache();rn tryrn rn XmlNode node = doc.SelectSingleNode(xPath);rn if (node != null)rn rn XmlElement element = doc.CreateElement(nodeName);rn element.InnerText = nodeValue;rn node.AppendChild(element);rnrn doc.Save(filePath);rn rn rn catch (Exception ex)rn rn WatcherTool.GetInstance.Error(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " ==> " + ex.Message);rn rn rn[/code] 论坛

没有更多推荐了,返回首页