C#文件监控对象FileSystemWatcher实例,文件创建,修改,删除,重命名等
来源:互联网 发布:爱奇艺mac版 编辑:程序博客网 时间:2024/05/20 19:46
using System;using System.IO;namespace QueueSample{ class Program { static void Main(string[] args) { MyFileSystemWather myWather = new MyFileSystemWather(@"C:\test", "*.txt"); myWather.OnChanged += new FileSystemEventHandler(OnChanged); myWather.OnCreated += new FileSystemEventHandler(OnCreated); myWather.OnRenamed += new RenamedEventHandler(OnRenamed); myWather.OnDeleted += new FileSystemEventHandler(OnDeleted); myWather.Start(); //由于是控制台程序,加个输入避免主线程执行完毕,看不到监控效果 Console.ReadKey(); } private static void OnCreated(object source, FileSystemEventArgs e) { Console.WriteLine("文件新建事件处理逻辑"); } private static void OnChanged(object source, FileSystemEventArgs e) { Console.WriteLine("文件改变事件处理逻辑"); } private static void OnDeleted(object source, FileSystemEventArgs e) { Console.WriteLine("文件删除事件处理逻辑"); } private static void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine("文件重命名事件处理逻辑"); } }}
using System.IO;namespace QueueSample{ public class WatcherProcess { private object sender; private object eParam; public event RenamedEventHandler OnRenamed; public event FileSystemEventHandler OnChanged; public event FileSystemEventHandler OnCreated; public event FileSystemEventHandler OnDeleted; public event Completed OnCompleted; public WatcherProcess(object sender, object eParam) { this.sender = sender; this.eParam = eParam; } public void Process() { if (eParam.GetType() == typeof(RenamedEventArgs)) { OnRenamed(sender, (RenamedEventArgs)eParam); OnCompleted(((RenamedEventArgs)eParam).FullPath); } else { FileSystemEventArgs e = (FileSystemEventArgs)eParam; if (e.ChangeType == WatcherChangeTypes.Created) { OnCreated(sender, e); OnCompleted(e.FullPath); } else if (e.ChangeType == WatcherChangeTypes.Changed) { OnChanged(sender, e); OnCompleted(e.FullPath); } else if (e.ChangeType == WatcherChangeTypes.Deleted) { OnDeleted(sender, e); OnCompleted(e.FullPath); } else { OnCompleted(e.FullPath); } } } }}
using System;using System.Collections;using System.IO;using System.Threading;namespace QueueSample{ public delegate void Completed(string key); public class MyFileSystemWather { private FileSystemWatcher fsWather; private Hashtable hstbWather; public event RenamedEventHandler OnRenamed; public event FileSystemEventHandler OnChanged; public event FileSystemEventHandler OnCreated; public event FileSystemEventHandler OnDeleted; /// <summary> /// 构造函数 /// </summary> /// <param name="path">要监控的路径</param> public MyFileSystemWather(string path, string filter) { if (!Directory.Exists(path)) { throw new Exception("找不到路径:" + path); } hstbWather = new Hashtable(); fsWather = new FileSystemWatcher(path); // 是否监控子目录 fsWather.IncludeSubdirectories = false; fsWather.Filter = filter; fsWather.Renamed += new RenamedEventHandler(fsWather_Renamed); fsWather.Changed += new FileSystemEventHandler(fsWather_Changed); fsWather.Created += new FileSystemEventHandler(fsWather_Created); fsWather.Deleted += new FileSystemEventHandler(fsWather_Deleted); } /// <summary> /// 开始监控 /// </summary> public void Start() { fsWather.EnableRaisingEvents = true; } /// <summary> /// 停止监控 /// </summary> public void Stop() { fsWather.EnableRaisingEvents = false; } /// <summary> /// filesystemWatcher 本身的事件通知处理过程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void fsWather_Renamed(object sender, RenamedEventArgs e) { lock (hstbWather) { hstbWather.Add(e.FullPath, e); } WatcherProcess watcherProcess = new WatcherProcess(sender, e); watcherProcess.OnCompleted += new Completed(WatcherProcess_OnCompleted); watcherProcess.OnRenamed += new RenamedEventHandler(WatcherProcess_OnRenamed); Thread thread = new Thread(watcherProcess.Process); thread.Start(); } private void WatcherProcess_OnRenamed(object sender, RenamedEventArgs e) { OnRenamed(sender, e); } private void fsWather_Created(object sender, FileSystemEventArgs e) { lock (hstbWather) { hstbWather.Add(e.FullPath, e); } WatcherProcess watcherProcess = new WatcherProcess(sender, e); watcherProcess.OnCompleted += new Completed(WatcherProcess_OnCompleted); watcherProcess.OnCreated += new FileSystemEventHandler(WatcherProcess_OnCreated); Thread threadDeal = new Thread(watcherProcess.Process); threadDeal.Start(); } private void WatcherProcess_OnCreated(object sender, FileSystemEventArgs e) { OnCreated(sender, e); } private void fsWather_Deleted(object sender, FileSystemEventArgs e) { lock (hstbWather) { hstbWather.Add(e.FullPath, e); } WatcherProcess watcherProcess = new WatcherProcess(sender, e); watcherProcess.OnCompleted += new Completed(WatcherProcess_OnCompleted); watcherProcess.OnDeleted += new FileSystemEventHandler(WatcherProcess_OnDeleted); Thread tdDeal = new Thread(watcherProcess.Process); tdDeal.Start(); } private void WatcherProcess_OnDeleted(object sender, FileSystemEventArgs e) { OnDeleted(sender, e); } private void fsWather_Changed(object sender, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Changed) { if (hstbWather.ContainsKey(e.FullPath)) { WatcherChangeTypes oldType = ((FileSystemEventArgs)hstbWather[e.FullPath]).ChangeType; if (oldType == WatcherChangeTypes.Created || oldType == WatcherChangeTypes.Changed) { return; } } } lock (hstbWather) { hstbWather.Add(e.FullPath, e); } WatcherProcess watcherProcess = new WatcherProcess(sender, e); watcherProcess.OnCompleted += new Completed(WatcherProcess_OnCompleted); watcherProcess.OnChanged += new FileSystemEventHandler(WatcherProcess_OnChanged); Thread thread = new Thread(watcherProcess.Process); thread.Start(); } private void WatcherProcess_OnChanged(object sender, FileSystemEventArgs e) { OnChanged(sender, e); } public void WatcherProcess_OnCompleted(string key) { lock (hstbWather) { hstbWather.Remove(key); } } }}
using Microsoft.Synchronization;using Microsoft.Synchronization.Files;using System;using System.IO;using System.Xml.Linq;namespace QueueSample{ class Program { /// <summary> /// 文件监控Microsoft.Synchronization /// </summary> /// <param name="args"></param> static void Main(string[] args) { /* 存放需要同步的文件夹,以后其他场景临时使用一下. <?xml version="1.0" encoding="utf-8" ?> <items> <item from="C:\\test" to="test1" /> </items> */ XElement doc = XElement.Load("File.xml"); var itms = doc.Descendants("item"); foreach (var item in itms) { var from = item.Attribute("from").Value; var to = item.Attribute("to").Value; if (!string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to) && Directory.Exists(from)) { if (!Directory.Exists(to)) { Directory.CreateDirectory(to); } //来源文件夹 FileSyncProvider sourceProvider = new FileSyncProvider(Guid.NewGuid(), from); //目录文件夹 FileSyncProvider destProvider = new FileSyncProvider(Guid.NewGuid(), to); SyncOrchestrator syncAgent = new SyncOrchestrator(); syncAgent.LocalProvider = sourceProvider; syncAgent.RemoteProvider = destProvider; syncAgent.Synchronize(); Console.WriteLine(from + " 到 " + to + " 同步完成"); //文件夹监控 //MyFileSystemWather myWather = new MyFileSystemWather(@"C:\test", "*.txt"); //myWather.OnChanged += new FileSystemEventHandler(OnChanged); //myWather.OnCreated += new FileSystemEventHandler(OnCreated); //myWather.OnRenamed += new RenamedEventHandler(OnRenamed); //myWather.OnDeleted += new FileSystemEventHandler(OnDeleted); //myWather.Start(); FileSystemWatcher watcher = new FileSystemWatcher(from, "*.*"); watcher.Changed += (O, E) => { //Console.WriteLine(DateTime.Now.ToString() + E.ChangeType); //启动同步回话 syncAgent.Synchronize(); Console.WriteLine(from + " 到 " + to + " 同步完成"); }; watcher.EnableRaisingEvents = true; } } Console.ReadLine(); } }}
阅读全文
0 0
- C#文件监控对象FileSystemWatcher实例,文件创建,修改,删除,重命名等
- C#监控文件(创建、修改、删除、重命名)
- C# FileSystemWatcher监控指定文件
- C# FileSystemWatcher监控指定文件
- 谈谈C#文件监控对象FileSystemWatcher使用感受
- 谈谈C#文件监控对象FileSystemWatcher使用感受
- 在C#使用文件监控对象FileSystemWatcher 实现数据同步
- 在C#使用文件监控对象FileSystemWatcher 实现数据同步
- 谈谈C#文件监控对象FileSystemWatcher使用感受
- 谈谈C#文件监控对象FileSystemWatcher使用感受
- C#中FileSystemWatcher控件实现文件监控
- FileSystemWatcher文件监控
- 文件的创建、删除、重命名
- 使用FileSystemWatcher监控文件变化
- powershell FileSystemWatcher监控文件变化
- 使用.NET FileSystemWatcher对象监控磁盘文件目录的改变
- C#利用FileSystemWatcher监控对文件的操作
- C#监控文件夹中文件的删除、移动、创建、重命名等操作
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式
- IOS多线程同步问题
- Android学习笔记四之Activity
- 《深入理解java虚拟机》学习-第八章-虚拟机字节码执行引擎-方法调用
- 基于配置的Spring声明式事务管理详解
- C#文件监控对象FileSystemWatcher实例,文件创建,修改,删除,重命名等
- 在wifi开启时,强制通过手机网络发送请求
- java多线程学习总结
- 数据库多个主键(联合主键)
- C++ 总结三
- .net程序运行原理
- 关于svn死循环问题
- HMM 算法随记(1)
- mySql中limit与in 不能同时使用