C#~使用FileSystemWatcher来监视文件系统的变化
对于一个文件夹的改变,C#这边有自己的类来实现,我们不需要关心它的内部实现机制,不需要关心它底层调用哪些API,我们只需要关心如何去调用它,如何让它帮助我们记录文件夹的修改情况即可。
#region 监视文件夹的变化
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "f:\\";
watcher.NotifyFilter =//被监控的方面
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName; // 订阅一些事件,当它被触发时(.net(windows)底层触发它,我们不用管),执行我们的方法
watcher.Changed += (object source, FileSystemEventArgs e) =>
{
Console.WriteLine("文件{0}已经被修改,修改类型{1}", e.FullPath, e.ChangeType.ToString());
};
watcher.Created += (object source, FileSystemEventArgs e) =>
{
Console.WriteLine("文件{0}被建立", e.FullPath);
};
watcher.Deleted += (object source, FileSystemEventArgs e) =>
{
Console.WriteLine("文件{0}已经被删除", e.FullPath);
};
watcher.Renamed += (object source, RenamedEventArgs e) =>
{
Console.WriteLine("文件{0}的名称已经从{1}变成了{2}", e.OldFullPath, e.OldName, e.Name);
}; // 为true表示开启FileSystemWatcher组件,反之我们的监控将不启作用
watcher.EnableRaisingEvents = true;
#endregion
另外,告诉大家一个 xor异或运算的使用技巧,就是它可以在不引入第三个变量的情况下,交替两个变量的值,你的变量可以是数值,也可以是字符,如果是字符,我们需要使用它的hashcode值进行xor运算。
#region xor两个变量交换
int a = 2;
int b = 3;
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
a = a ^ b ^ (b = a);
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
#endregion
结果如图:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG0AAABMCAIAAADoaq6SAAAC70lEQVR4nO2ay1ITQRSGe8skEXMTBcUk5oLkioooiVWufADfIVWaBEgmIAIJ5a28lVW+UpYsWfA+cdGpOM5091z6SCnzf3UWMDU90/PldE/31GHT6fTi/Ozi/MzId4x853j88f2nr874/O3Hl+8/P1iOvHhpGrk2b8UjUuhECt1IoRspdqPFbrTYixZ70VIvVurFSjuxtZ1r87i/u8hjfXdxfe86j/JevNyPl/vxSj9e6Scqg0RlkKgOEtVBsjpI1sxkzUzVzFTdTNWHqfowXR+mG8N0Yz/d2L+xweNgaeNg6cEsbj58M49bjw55LG8eLm++5bHymMfRytbRbR5Pju/M4+nJKo/tk9Xt0V0ezVGmOco0x5nWONMaZ1vjbOs0++yU2Twa914t5Npewsi1jfxreJR41Ah4hEc6jwid+O3xHdDgD4/PQVDsHhkIBjzSAI80wCMN+h4nFog79x+h6dGqL9Qq4ZEGp0fZOJ04sF0KHsX56MtLqCUyt3y0qlHkY9glMofHAPMdJDKm7RHvmRmKcc08qHF9+YQF7GdogEca4JEGeKQBHmmARxrgkQbhOtzXMhCLR8bk63CPzbGfmaHp0Qo86n7vsZ5waT3/t1Dno0c1mB99eEQ+qiDJxwAnXzU0PQaWftWQfcf1PuUpRnqIwH6GBnikAR5pgEca4JEGeKQBHmlA/SMNqNujgXBcwyPqH7UhqX/E/Ijv4UTo1z/OgUfUP2qjWf/IsH7kYD9DAzzSAI80wCMN8EgDPNIAjzSg/pEG1D/SAI804HsPDVT1ZqGWyIjqH8MukVHkIyQyhvpHKjTrH11fPmEB+xka4JEGeKRB6FExzQWeAW0Nhct4X1dQN3FO3H93Bpflo+x+woexdlHW48AeresB2R9e+unaRAu/41rx/HOPwjOt/wofxlWK7fpemvi6ixay72bWhFIPEFePzuNe7uLsqvAnlDWR9fmSPAr7PRGlgI5H512EB5nyJxT2SnFEcaa+4l93NJm9GhXZ+gAAAABJRU5ErkJggg==" alt="" />
C#~使用FileSystemWatcher来监视文件系统的变化的更多相关文章
- WPF中监视DependencyProperty的变化
WPF中监视DependencyProperty的变化 周银辉 尽管一个类会提供很多事件,但有时候还是显得不够,比如说前两天我就以为WPF的ListBox控件会有ItemsSourceChange ...
- 使用FileSystemWatcher组件监视日志文件
实现效果: 知识运用: FileSystemWatcher组件的Path属性 Filter属性 //要监视那些文件 默认为*.* Endinit方法 //结束在窗体上使用或有另一个组件使用的Fil ...
- 使用path监听指定文件系统的变化
在以前的JAVA版本中,如果程序需要检测文件的变化,那么需要开辟一个线程每隔一段时间去遍历一次指定的目录,如果发现此次遍历结果和上次不同,那么就认为文件变动了 ,这样的方式非常繁琐,JAVA 7之后的 ...
- 使用pyinotify监控文件系统的变化
pyinotify依赖Linux内核inotify功能,它需要在2.6.13版本的内核的Linux系统上运行. 1. 安装pyinotify pip install pyinotify 安装完后可以直 ...
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- angular总结控制器的三种主要职责: 为应用中的模型设置初始状态 通过$scope对象把数据模型或函数行为暴露给视图 监视模型的变化,做出相应的动作
m1.双向数据绑定: <body> <div ng-app ng-init="user.name='world'"> <h1>使用NG实现双边数 ...
- vue中监视对象内部变化的三种方法
一,对整个对象监视 watch:{ obj:{ handler(newV,oldV){ console.log('obj changed') }, deep: true,//深度遍历 immediat ...
- C#使用FileSystemWatcher控件实现的文件监控功能示例
本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能.分享给大家供大家参考,具体如下: FileSystemWatcher 可以使用FileSystemWatcher组件监视 ...
- inotify--内核中文件系统的通知机制
转载:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html 一. 引言 众所周知,Linux 桌面系统与 MAC 或 W ...
随机推荐
- [Unity3D]蓝港面试题
1. 请简述值类型与引用类型的差别 答: 差别:1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址.2.值类型存取快,引用类型存取慢.3.值类型表示实际数据,引用 ...
- swift2.0 UIImagePickerController 拍照 相册 录像
系统 ios9.1 语言swift2.0 在app 里最常用的功能就是多媒体选择,首先我们storyboard 创建一个button 用于触发选择事件 @IBAction func selectIma ...
- C#基础:C#4.0权威指南 杂笔一
1.c#中数组初始化的几种不同用法 int[] name = new int[NUM]; int[] name = {1, 2, 3, 4, 5, 6}; int[] ...
- 分页搜索查询sql
select * from (select t.*,rownum no from " + table + " t where scbj=0)where (no>(" ...
- objective-C nil,Nil,NULL 和NSNull的小结
nil用来给对象赋值(Object-C的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Object-C中类是一个对象,是类的meta-class ...
- [转载]iOS开发:获取设备信息
开发iOS平台的应用的时候,可以获取iOS设备的设备信息,包括设备的名称,设备的机型,设备的iOS版本等等.设备信息主要来自 UIDevice 类. UIDevice *currentDevice = ...
- DTO学习系列之AutoMapper(五)----当EntityFramework爱上AutoMapper
有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易,相处不易. 在DDD(领域驱动设计)中,使用AutoMapp ...
- WCF入门教程系列四
一.概述 配置也是WCF编程中的主要组成部分.在 以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址. 服务 ...
- C#如何获得本地电脑IP
using System; using System.Collections.Generic; using System.Text; using System.Net; //需要引用.Net命名空 ...
- Lightoj1009 Back to Underworld(带权并查集)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Back to Underworld Time Limit:4000MS ...