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

  • 相关阅读:
    加载与隐藏显示
    Task 自我总结认知
    修复SDF数据库引擎C#代码
    Windows防火墙开启后 ping不通了 的解决方案
    C# 串口
    WPF DataGrid中单元格运用Combobox的示例
    组合模式
    适配器模式
    【转载】.net 动态代理
    python数组操作
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/filesystemwatcher.html
Copyright © 2011-2022 走看看