FileSystemWatcher.Created 事件

定义

当在指定 Path 中创建文件和目录时发生。

C#
public event System.IO.FileSystemEventHandler? Created;
C#
public event System.IO.FileSystemEventHandler Created;
C#
[System.IO.IODescription("FSW_Created")]
public event System.IO.FileSystemEventHandler Created;

事件类型

属性

示例

以下示例使用 Created 事件在创建监视文件时显示控制台的文件路径。

C#
using System;
using System.IO;

namespace MyNamespace
{
    class MyClassCS
    {
        static void Main()
        {
            using var watcher = new FileSystemWatcher(@"C:\path\to\folder");

            watcher.NotifyFilter = NotifyFilters.Attributes
                                 | NotifyFilters.CreationTime
                                 | NotifyFilters.DirectoryName
                                 | NotifyFilters.FileName
                                 | NotifyFilters.LastAccess
                                 | NotifyFilters.LastWrite
                                 | NotifyFilters.Security
                                 | NotifyFilters.Size;

            watcher.Changed += OnChanged;
            watcher.Created += OnCreated;
            watcher.Deleted += OnDeleted;
            watcher.Renamed += OnRenamed;
            watcher.Error += OnError;

            watcher.Filter = "*.txt";
            watcher.IncludeSubdirectories = true;
            watcher.EnableRaisingEvents = true;

            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }

        private static void OnChanged(object sender, FileSystemEventArgs e)
        {
            if (e.ChangeType != WatcherChangeTypes.Changed)
            {
                return;
            }
            Console.WriteLine($"Changed: {e.FullPath}");
        }

        private static void OnCreated(object sender, FileSystemEventArgs e)
        {
            string value = $"Created: {e.FullPath}";
            Console.WriteLine(value);
        }

        private static void OnDeleted(object sender, FileSystemEventArgs e) =>
            Console.WriteLine($"Deleted: {e.FullPath}");

        private static void OnRenamed(object sender, RenamedEventArgs e)
        {
            Console.WriteLine($"Renamed:");
            Console.WriteLine($"    Old: {e.OldFullPath}");
            Console.WriteLine($"    New: {e.FullPath}");
        }

        private static void OnError(object sender, ErrorEventArgs e) =>
            PrintException(e.GetException());

        private static void PrintException(Exception? ex)
        {
            if (ex != null)
            {
                Console.WriteLine($"Message: {ex.Message}");
                Console.WriteLine("Stacktrace:");
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine();
                PrintException(ex.InnerException);
            }
        }
    }
}

注解

某些常见事件(例如复制或移动文件或目录)不直接与事件对应,但这些事件确实会导致引发事件。 复制文件或目录时,如果正在监视该文件的目录,系统会在文件复制到的目录中引发 Created 事件。 如果从中复制的目录正由 的另一个 实例 FileSystemWatcher监视,则不会引发任何事件。 例如,创建 的两个 FileSystemWatcher实例。 FileSystemWatcher1 设置为“C:\My Documents”watch,FileSystemWatcher2 设置为watch“C:\Your Documents”。 如果将文件从“我的文档”复制到“您的文档”,FileSystemWatcher2 将引发事件 Created ,但不会为 FileSystemWatcher1 引发任何事件。 与复制不同,移动文件或目录会引发两个事件。 在前面的示例中,如果将文件从“我的文档”移动到“你的文档”, Created 则 FileSystemWatcher2 将引发事件, Deleted FileSystemWatcher1 将引发事件。

备注

常见的文件系统操作可能会引发多个事件。 例如,当文件从一个目录移动到另一个目录时,可能会引发多个OnChangedOnDeleted一些OnCreated事件。 移动文件是一项复杂的操作,由多个简单操作组成,因此引发多个事件。 同样,某些应用程序 (例如,防病毒软件) 可能会导致 检测到 FileSystemWatcher的其他文件系统事件。

备注

当 属性不是 nullSynchronizingObject,事件相对于其他FileSystemWatcher事件的引发顺序Created可能会更改。

创建 OnCreated 文件后立即引发 事件。 如果将文件复制或传输到受监视目录,则会立即引发事件 OnCreated ,然后引发一个或多个 OnChanged 事件。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅