对于一个文件夹的改变,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. Laravel-高级篇-Artisan

    (慕课网_轻松学会Laravel-高级篇_天秤vs永恒老师_http://www.imooc.com/learn/702) 一.概述 Artisan是Laravel中自带的命令行工具的名称 由强大的S ...

  2. [Angular 2] Injecting a Service

    Using Services in Angular 2 is very simple. This lesson covers how to create a simple class as a Ser ...

  3. samba错误

    1.session setup failed: NT_STATUS_LOGON_FAILURE 该错误表示用户有误, 可能是用户不存在, 也有可能是密码错误, 或者用户只是在samba和系统的用户中的 ...

  4. 《第一行代码》学习笔记30-内容提供器Content Provider(3)

    1."如何在自己的程序中访问其他应用程序的数据",思路->获取到该应用程序的内容URI,再借助ContentResolver进行CRUD操作. 2.要实现跨程序共享数据-&g ...

  5. .net 判断日期格式yyyy-MM-dd hh:MM:ss的正则表达式

    加上引用: using System.Text.RegularExpressions; /// <summary> /// 检查字符串是否是日期格式        /// </sum ...

  6. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  7. windows下自动删除n天前的文件

    使用windows2003下的内置命令forfiles配合计划任务可以实现自动删除n天前的文件. windows2003中设定自动执行的计划任务很简单. 一.脚本编写 forfiles命令用法: Fo ...

  8. ecstore使用paypal支付显示不支持此支付

    问题描述: ecstore使用paypal支付,下单结算时显示不支持此支付. 问题和代码分析: 1.首先必须要保证默认货币是paypal支持的货币,paypal目前支付 ["supportC ...

  9. easyui 实现Tooltip

    $('#btnAddr').tooltip({ content: $('<div class="table"></div>'), //弹出收件地址 show ...

  10. No.5 表达式中的陷阱

    1. 关于字符串的陷阱 JVM对字符串的处理 String java = new String("Java"); 创建了几个对象? 2个."Java"直接量对应 ...