对于一个文件夹的改变,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. (转载)XML Tutorial for iOS: How To Read and Write XML Documents with GDataXML

    In my recent post on How To Choose the Best XML Parser for Your iPhone Project, Saliom from the comm ...

  2. 自定义seekbar中,thumb被覆盖掉一部分问题

  3. Linux是如何启动的

    今天早上在上操作系统课的时候,老师有提到计算机从按下开关键到最后由操作系统全然接管的整个过程. 只是讲课毕竟是十分抽象的,由于之前自己也看过这方面的内容,可是老是记不住,所以今天晚上就花了点时间,把& ...

  4. LoadRunner测试下载功能点脚本(方法二)

    在上一篇<LoadRunner下载功能点脚本(方法一)>中,实现的脚本仅是录制下载功能点的脚本,现在性能需求的场景更改如下: 性能需求:对系统某页面中,点击下载并将下载文件保存到本地电脑的 ...

  5. vsim生成VCD波形文件(verilog)

    Vsim(ModelSim)生成VCD波形文件(verilog) 两种方法 方法一: 调用ModelSim自己的命令生成,仿真脚本中加入如下一句即可 vcd file mytb.vcd 方法二: 调用 ...

  6. jquery颜色渐变

    http://files.cnblogs.com/handsomer/jquery.animate-colors-min.js

  7. Android开发环境的搭建之(一)Java开发环境的安装

    (1)  安装JDK(Java Developer Kit).下载JDK1.8并安装jdk-8u60-windows-i586.exe.下载官方链接http://www.oracle.com/tech ...

  8. 常用SQL语句学习整理

    增 insert into table_name (column_name1,column_name2) values (value1,value2) 删 delete from table_name ...

  9. Asp.net mvc 3 file uploads using the fileapi

    Asp.net mvc 3 file uploads using the fileapi I was recently given the task of adding upload progress ...

  10. 【转载】Java 动态代理

    Java 动态代理 本文为 Android 开源项目源码解析 公共技术点中的 动态代理 部分项目地址:Jave Proxy,分析的版本:openjdk 1.6,Demo 地址:Proxy Demo分析 ...