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,如果不指定,则程序会一直在等待。

  • 相关阅读:
    php7与其他版本共存
    centos源码安装mysql5.7
    禁用composer update命令
    lumen怎么得到当前Uri的控制器、Action、路由规则
    配置lumen的log为daily模式
    laravel如何打印orm封装的sql语句
    nginx 重写URL尾部斜杠
    Laravel的Nginx重写规则--让路由支持末尾加斜线
    laravel redis存数组并设置过期时间
    openresty
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/filesystemwatcher.html
Copyright © 2011-2022 走看看