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

  • 相关阅读:
    Java中的软(弱)引用
    国庆节前夕的夜晚
    Internet连接共享只能上qq不能打开网页的问题解决
    Android多线程研究(9)——读写锁
    JavaScript开发——文件夹的上传和下载
    JS开发——文件夹的上传和下载
    B/S开发——文件夹的上传和下载
    php web开发——文件夹的上传和下载
    asp.net web开发——文件夹的上传和下载
    Java web开发——文件夹的上传和下载
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/filesystemwatcher.html
Copyright © 2011-2022 走看看