对于一个文件夹的改变,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来监视文件系统的变化的更多相关文章

  1. WPF中监视DependencyProperty的变化

    WPF中监视DependencyProperty的变化   周银辉 尽管一个类会提供很多事件,但有时候还是显得不够,比如说前两天我就以为WPF的ListBox控件会有ItemsSourceChange ...

  2. 使用FileSystemWatcher组件监视日志文件

    实现效果: 知识运用: FileSystemWatcher组件的Path属性 Filter属性 //要监视那些文件   默认为*.* Endinit方法 //结束在窗体上使用或有另一个组件使用的Fil ...

  3. 使用path监听指定文件系统的变化

    在以前的JAVA版本中,如果程序需要检测文件的变化,那么需要开辟一个线程每隔一段时间去遍历一次指定的目录,如果发现此次遍历结果和上次不同,那么就认为文件变动了 ,这样的方式非常繁琐,JAVA 7之后的 ...

  4. 使用pyinotify监控文件系统的变化

    pyinotify依赖Linux内核inotify功能,它需要在2.6.13版本的内核的Linux系统上运行. 1. 安装pyinotify pip install pyinotify 安装完后可以直 ...

  5. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  6. angular总结控制器的三种主要职责: 为应用中的模型设置初始状态 通过$scope对象把数据模型或函数行为暴露给视图 监视模型的变化,做出相应的动作

    m1.双向数据绑定: <body> <div ng-app ng-init="user.name='world'"> <h1>使用NG实现双边数 ...

  7. vue中监视对象内部变化的三种方法

    一,对整个对象监视 watch:{ obj:{ handler(newV,oldV){ console.log('obj changed') }, deep: true,//深度遍历 immediat ...

  8. C#使用FileSystemWatcher控件实现的文件监控功能示例

    本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能.分享给大家供大家参考,具体如下: FileSystemWatcher 可以使用FileSystemWatcher组件监视 ...

  9. inotify--内核中文件系统的通知机制

    转载:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html 一. 引言 众所周知,Linux 桌面系统与 MAC 或 W ...

随机推荐

  1. CSS3 div水平、垂直居中,IE9以上、Firefox、Chrome均正常

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 使用sublime text2怎样新建文件高速生成HTML头部信息?

    前提须要安装Emmet插件.安装完毕后重新启动sublime. 输入下面简写,按Tab. html:4t <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...

  3. android调试系列--使用ida pro调试so

    1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:阿里安全挑战赛第二题:http://pan.baidu.com/s/1eS9EXIM 2. ...

  4. python - socket模块1

    1.使用生活中的接打电话,解释socket通信流程  2.根据上图,写出socket通信的伪代码 2.1.server端伪代码 #买手机   #买手机卡 #开机 #等待电话 #收消息 #发消息 #挂电 ...

  5. windows服务器性能监控工具、方法及关键指标

    原文:http://www.cnblogs.com/liulun/p/3543777.html 监控方法 推荐使用windows自带的“性能监视器”(老版本的windows叫性能计数器)来监控服务器的 ...

  6. javascript---String与Arry

    var str = "liuzhanqi"; document.write(str["length"]);//等价str.l ength var str = s ...

  7. 《第一行代码》学习笔记17-碎片Fragment(2)

    1.碎片的状态和回调: (1)运行状态:碎片可见+所关联的活动处于运行状态. (2)暂停状态:当活动进入暂停状态(由于另一个未占满屏幕的活动被添加到栈顶),与其相关联的可见碎片会进入暂停状态. (3) ...

  8. 为自己的Android应用添加广告

    平时也写了不少Android小应用,但是都是做练习之用,从来没有想过添加广告赚钱这一说. 个人是非常反感在应用内添加广告这种行为的,非常影响用户体验,不小心点到广告的话,手机流量哗哗地就没了··· 但 ...

  9. java二维不定长数组测试

    package foxe; import javax.swing.JEditorPane;import javax.swing.JFrame; /** * @author fooxe * * @see ...

  10. (原).cc 和 .cpp 后缀结尾的文件的区别

    This caused a few problems the first time C++ was ported to a system where case wasn't significant i ...