9、.Net Core监听Linux下文件夹变化

.Net Core提供了一个很强大的文件处理,并封装关于文件新增、修改、重命名、删除的事件监听。

官方示例代码:FileSystemWatcher 类

核心代码:

          using (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 += OnChanged;

                watcher.Created += OnCreated;

                watcher.Deleted += OnChanged;

                watcher.Renamed += 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') ;

            }

知识点:

1、FileSystemWatcher可以监视指定目录的文件和子目录中的更改。你可以创建一个组件来监视本地计算机、网络驱动器或远程计算机上的文件。

2、若要监视所有文件中的更改,请将Filter属性设置为空字符串 ( "" ) 或使用通配符 ( "* * "。) 。

3、若要查看特定文件,请将Filter属性设置为文件名。例如,若要监视文件 MyDoc.txt 中的更改,请将Filter属性设置为 "MyDoc.txt"。还可以监视特定类型的文件中的更改。例如,若要监视文本文件中的更改,请将Filter属性设置为 " * .txt"(官方示例即监听*.txt)。

4、可以在目录或文件中监视几种类型的更改。例如,你可以监听文件的属性(如:日期、时间,Size文件或目录等)。这是通过将属性设置NotifyFilter为值之一来完成的NotifyFilters。有关可以观看的更改类型的详细信息,请参阅NotifyFilters。

5、可以监视文件或目录的重命名、删除或创建。例如,若要监视是否重命名了文本文件,请将Filter属性设置为 "* .txt" 并WaitForChanged使用Renamed为其参数指定的指定方法。

6、Windows 操作系统会将文件更改的组件通知到由创建的缓冲区FileSystemWatcher。如果短时间内有很多更改,则缓冲区可能溢出。若要避免缓冲区溢出,请使用NotifyFilter和IncludeSubdirectories属性,以便可以筛选出不需要的更改通知。

7、有关实例的初始属性值的列表FileSystemWatcher,请参见FileSystemWatcher构造函数。

8、不会忽略隐藏的文件。

9、SecurityException 当直接调用方或派生类不具有完全信任权限时,将引发。有关安全要求的详细信息,请参阅链接需求。

10、可为通过网络监视目录的属性设置的最大大小InternalBufferSize为 64 KB。

你可能感兴趣的:(9、.Net Core监听Linux下文件夹变化)