首先这是我自己在一个任务需求里面所要用到的,大致的代码如下:我把监视文件和备份文件的方法封装到一个WatcherAndBackup

类中了,但是总感觉封装的不是很好,有大牛能够指出改正之处在此留言,谢谢指点了哈!!,主要监视文件用到的类就是在sysytem.IO

里面的FileSystemWatcher,然后在一个控制台里面创建类WatcherAndBackup的实例并且运行就行

  1. class WatcherAndBackup
  2. {
  3. string sourcefile = "";//源文件
  4. string targetfile = "";//目标文件
  5. string targetPath = "";//目标路径
  6. public WatcherAndBackup(string Sourcefile,string Targetfile,string TargetPath)
  7. {
  8. sourcefile = Sourcefile;targetfile = Targetfile;targetPath = TargetPath;
  9. }
  10.  
  11. public void backup(string sourcefile,string targetfile,string targetPath)
  12. {
  13. try
  14. {
  15. if (!Directory.Exists(targetPath))
  16. {
  17. Directory.CreateDirectory(targetPath);
  18.  
  19. }
  20. File.Copy(sourcefile, targetfile, true);
  21.  
  22. }
  23. catch { }
  24. }
  25. #region 实时监视文件更改并且备份文件
  26. public void watcherfile(string path,string file)
  27. {
  28. FileSystemWatcher fsw = new FileSystemWatcher(path, file);
  29. fsw.Changed += new FileSystemEventHandler(change_watcher);
  30. fsw.Created += new FileSystemEventHandler(change_watcher);
  31. fsw.Deleted += new FileSystemEventHandler(change_watcher);
  32. fsw.Renamed += new RenamedEventHandler(rename_watcher);
  33. fsw.EnableRaisingEvents = true;
  34. Console.WriteLine("开始监视。。。。");
  35. fsw.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName
  36. | NotifyFilters.LastAccess | NotifyFilters.Security | NotifyFilters.Size | NotifyFilters.LastWrite;
  37. fsw.IncludeSubdirectories = true;
  38. }
  39. public void change_watcher(object sender,FileSystemEventArgs e)
  40. {
  41.  
  42. var wacher = sender as FileSystemWatcher;
  43. wacher.EnableRaisingEvents = false;
  44.  
  45. if (e.ChangeType==WatcherChangeTypes.Changed)
  46. {
  47. Console.WriteLine("正在备份。。。");
  48. backup(sourcefile,targetfile,targetPath);
  49. Console.WriteLine("备份成功。。。");
  50.  
  51. }
  52. else if (e.ChangeType==WatcherChangeTypes.Created)
  53. {
  54. Console.WriteLine("{0},{1},{2}", e.ChangeType, e.FullPath, e.Name);
  55. return;
  56. }
  57. else if (e.ChangeType==WatcherChangeTypes.Deleted)
  58. {
  59. Console.WriteLine("{0},{1},{2}", e.ChangeType, e.FullPath, e.Name);
  60. return;
  61. }
  62. wacher.EnableRaisingEvents = true;
  63. }
  64. public void rename_watcher(object sender,RenamedEventArgs e)
  65. {
  66. Console.WriteLine("{0},{1},{2}", e.ChangeType, e.FullPath, e.Name);
  67. }
  68. #endregion
  69.  
  70. }
  1. static void Main(string[] args)
  2. {
  3. WatcherAndBackup bk = new WatcherAndBackup(@"D:\gg\config.xml", @"D:\gg\backup\config.xml", @"D:\gg\backup");
  4. bk.watcherfile(@"D:\gg", "config.xml");//监视的文件为D:\gg\config.xml
  5. Console.Read();
  6. }

 在这里解释一下:实例类WatcherAndBackup时分别要写下backup方法的三个参数:sourcefile、targefile、targePath,也就是备份方法的源文件、目标文件、目标文件的目录,然后在change_watcher方法当中为什么会有这几局代码:

var wacher=sender as FileSystemWatcher;

wacher.EnableRaisingEvents=false;

然后在方法后面:

wacher.EnableRaisingEvents=true;

其实如果不加入这几句代码会出现当监控到文件修改时会触发两次changed方法,这个修改方法是我在网上找到的一个修改方法

好了,基本也说完了。。。有什么不正确的地方请各位大牛指正,本就打着学习的态度写下的。。嘿嘿!!

  1.  
 
 
 

FileSystemWatcher类监控文件的更改状态并且实时备份文件的更多相关文章

  1. C# FileSystemWatcher 在监控文件夹和文件时的用法

    概述 最近学习FileSystemWatcher的用法,它主要是监控一个文件夹,当文件夹内的文件要是有更改就要记录下来,我就整理下我对FileSystemWatcher 的理解和用法. FileSys ...

  2. C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指定文件夹

    项目需求: 局域网内有两台电脑,电脑A(Windows系统)主要是负责接收一些文件(远程桌面粘贴.FTP上传.文件夹共享等方式),希望能在A接收文件后自动传输到电脑B(Windows系统)来做一个备份 ...

  3. 使用FileSystemWatcher监控文件夹及文件

    引言 这一周主要精力集中学习一个同事开发的本地文件搜索项目上,其中客户端添加共享文件时主要是使用FileSystemWatcher 监控文件,并在各种事件发生时向服务器发送消息. 解决方法 FileS ...

  4. 工具类commons-io的Tailer用来监控文件

    一.前言:在Linux下有使用tail命令 在Commons-io中也提供这种方法 二.他采用的是线程方式来监控文件内容的变化 1.Tailer类(采用线程的方式进行文件的内容变法) 2.Tailer ...

  5. 【.Net 学习系列】-- FileSystemWatcher 监控文件夹新生成文件,并在确认文件没有被其他程序占用后将其移动到指定文件夹

    监控文件夹测试程序: using System; using System.Collections.Generic; using System.IO; using System.Linq; using ...

  6. [转帖]Linux下inotify监控文件夹状态,发生变化后触发rsync同步

    Linux下inotify监控文件夹状态,发生变化后触发rsync同步 https://www.cnblogs.com/fjping0606/p/6114123.html 1.安装工具--inotif ...

  7. Windows系统中监控文件复制操作的几种方式

    http://blog.sina.com.cn/s/blog_4596beaa0100lp4y.html 1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得 ...

  8. C#监控文件夹变化

    当需要监控某一文件,FileSystemWatcher类提供了Created, Deleted,Rename等事件. 就拿FileSystemWatcher的Created事件来说,该事件类型是Fil ...

  9. Python 的 pyinotify 模块 监控文件夹和文件的变动

    官方参考: https://github.com/seb-m/pyinotify/wiki/Events-types https://github.com/seb-m/pyinotify/wiki/I ...

随机推荐

  1. npm -v;报错 cannot find module "wrapp"

    1.node -v正常.npm-v就报错.. 说明:在官网上下载了安装了好几次.一用到npm就报这个错.园友们,我不太懂node,你们遇到这个问题怎么解决的? 2.报错 cannot find mod ...

  2. 深入理解Postgres中的cache

    众所周知,缓存是提高数据库性能的一个重要手段.本文着重讲一讲PostgreSQL中的缓存相关的东西.当然万变不离其宗,原理都是共同的,理解了这些,你也很容易把它运用到其它数据库中. What is a ...

  3. asp.net core 2.0集成signalr

    在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net cor ...

  4. 照虎画猫写自己的Spring——依赖注入

    前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为F ...

  5. 大神博客链接系列---C#SubSonic3.0搭建ORM

    一.C#框架 C#ORM框架: SubSonic3.0制作ORM--- http://www.cnblogs.com/EmptyFS/p/3659679.html

  6. 深入了解Android蓝牙Bluetooth——《进阶篇》

    在 [深入了解Android蓝牙Bluetooth--<基础篇>](http://blog.csdn.net/androidstarjack/article/details/6046846 ...

  7. MySQL .msi 安装失败改用.zip安装步骤

    一开始官网下载.msi安装包,安装到配置server时无法启动,长时间卡在这里,无法继续下去.上网看了一下解决办法,发现用.zip安装包进行安装比较简单可靠. 一.利用.msi安装包安装失败后的处理 ...

  8. 十大经典排序算法的JS版

    前言 个人博客:Damonare的个人博客 如遇到问题或有更好的优化方法,可以: 提issue给我 或是pull requests 我都会看到并处理,欢迎Star. 这世界上总存在着那么一些看似相似但 ...

  9. python :ascii codec can't decode byte 0xe8 in posit

    python代码: slide.setAttribute("SlideName", module.slide_name)  slide.setAttribute("Sli ...

  10. GDAL编译

    使用cmd命令行编译 1.首先在“开始菜单\所有程序\Microsoft Visual Studio 2008\Visual Studio Tools\ Visual Studio 2008命令提示” ...