zoukankan      html  css  js  c++  java
  • 使用FileSystemWatcher监视文件变化

    public class Watcher
    {

        
    public static void Main()
        
    {
        Run();

        }


        [PermissionSet(SecurityAction.Demand, Name
    ="FullTrust")]
        
    public static void Run()
        
    {
            
    string[] args = System.Environment.GetCommandLineArgs();
     
            
    // If a directory is not specified, exit program.
            if(args.Length != 2)
            
    {
                
    // Display the proper way to call the program.
                Console.WriteLine("Usage: Watcher.exe (directory)");
                
    return;
            }


            
    // Create a new FileSystemWatcher and set its properties.
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path 
    = args[1];
            
    /* Watch for changes in LastAccess and LastWrite times, and 
               the renaming of files or directories. 
    */

            watcher.NotifyFilter 
    = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
               
    | NotifyFilters.FileName | NotifyFilters.DirectoryName;
            
    // Only watch text files.
            watcher.Filter = "*.txt";

            
    // Add event handlers.
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.Created 
    += new FileSystemEventHandler(OnChanged);
            watcher.Deleted 
    += new FileSystemEventHandler(OnChanged);
            watcher.Renamed 
    += new RenamedEventHandler(OnRenamed);

            
    // Begin watching.
            watcher.EnableRaisingEvents = true;

            
    // Wait for the user to quit the program.
            Console.WriteLine("Press \'q\' to quit the sample.");
            
    while(Console.Read()!='q');
        }


        
    // Define the event handlers.
        private static void OnChanged(object source, FileSystemEventArgs e)
        
    {
            
    // Specify what is done when a file is changed, created, or deleted.
           Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
        }


        
    private static void OnRenamed(object source, RenamedEventArgs e)
        
    {
            
    // Specify what is done when a file is renamed.
            Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
        }

    }

    需要注意的两点:
    1. 必须设置watcher.EnableRaisingEvents为true才可以开始监视
    2. 使用watcher.WaitForChanged(WatcherChangeTypes.Changed,1000)方法时必须指定第二个参数timeout,如果不指定,则程序会一直在等待。

  • 相关阅读:
    微信小程序开发前期准备
    怎样在vs2013和vs2015中实现自动编译sass
    在MVC中使用Bundle打包压缩js和css
    Html5 突破微信限制实现大文件分割上传
    Automapper 实现自动映射
    Polly一种.NET弹性和瞬态故障处理库(重试策略、断路器、超时、隔板隔离、缓存、回退、策略包装)
    关于transactionscope 事务的脏数据
    IIS设置session时长
    已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一
    DAL.SQLHelper 的类型初始值设定项引发异常的处理
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/filesystemwatcher.html
Copyright © 2011-2022 走看看