FileSystemWatcher使用方法具体解释

概述:

FileSystemWatcher是一个用于监视系统文件和目录更改的类。它可以用于监视文件的创建,修改,删除和重命名等操作,并提供一个事件机制,用于处理文件更改事件。

使用方法:

1. 创建一个 FileSystemWatcher 实例

使用 FileSystemWatcher 类之前,必须先创建一个 FileSystemWatcher 类的实例。创建 FileSystemWatcher 类实例的最常见代码如下:

```c#

using System.IO;

FileSystemWatcher watcher = new FileSystemWatcher();

```

2. 设置监视的文件或目录

在创建 FileSystemWatcher 类实例后,必须指定要监视的文件或目录。可以通过以下属性指定:

```c#

watcher.Path = @"C:\Users\username\Desktop"; // 需要监视的文件夹

watcher.Filter = "*.txt"; // 需要监视的文件类型,可以是任意字符串。例如:*.txt 测试.txt 等。

```

其中,Path属性指定要监视的文件或目录的路径,可以是本地路径或网络路径。Filter属性指定要监视的文件类型,使用通配符*表示匹配任意字符,使用?表示匹配一个字符。

3. 设置监视文件的更改类型

FileSystemWatcher类可以监视以下四种更改类型:

- 文件的创建

- 文件的修改

- 文件的删除

- 文件的重命名

设置监听方式如下:

```c#

watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.FileName | NotifyFilters.DirectoryName;

```

NotifyFilter属性用于指定要监视的更改类型。在以上代码中,通过分配位掩码来组合多个 NotifyFilters 枚举值,使用的则是(文件的创建、文件的修改、文件名更改以及目录名更改)。

4. 注册 FileSystemWatcher 类的事件

FileSystemWatcher 类提供了以下事件来处理文件更改:

- Created:文件或目录被创建。

- Changed:文件或目录被更改。

- Deleted:文件或目录被删除。

- Renamed:文件或目录被重命名。

在 FileSystemWatcher 类的实例中注册这些事件的代码如下:

```c#

watcher.Changed += new FileSystemEventHandler(OnChanged);

watcher.Created += new FileSystemEventHandler(OnCreated);

watcher.Deleted += new FileSystemEventHandler(OnDeleted);

watcher.Renamed += new RenamedEventHandler(OnRenamed);

private static void OnChanged(object source, FileSystemEventArgs e)

{

// 在文件更改事件被触发时调用

}

private static void OnCreated(object source, FileSystemEventArgs e)

{

// 在文件创建事件被触发时调用

}

private static void OnDeleted(object source, FileSystemEventArgs e)

{

// 在文件删除事件被触发时调用

}

private static void OnRenamed(object source, RenamedEventArgs e)

{

// 在文件重命名事件被触发时调用

}

```

需要注意的是,这些事件是异步的,也就是说它们将在文件更改发生后异步触发,而不是立即触发,所以处理事件时需要小心。

5. 启动 FileSystemWatcher 类实例

注册了 FileSystemWatcher 类实例的事件后,就可以启动 FileSystemWatcher 类了。使用 FileSystemWatcher 类的 BeginWatching() 方法来启动 FileSystemWatcher,如下所示:

```c#

watcher.EnableRaisingEvents = true;

```

EnableRaisingEvents 属性用于启用或禁用 FileSystemWatcher 类。启动 FileSystemWatcher 后会立即开始监视系统文件和目录的变化。

案例说明:

假设我们需要监视一个文件夹,当其中有任何txt文件被创建、修改、删除或者重命名时,我们需要记录下来时间和文件名。

```c#

using System;

using System.IO;

namespace FileSystemWatcherExample

{

class Program

{

private static string folderPath = @"C:\Users\username\Desktop\test\";

static void Main(string[] args)

{

FileSystemWatcher watcher = new FileSystemWatcher();

watcher.Path = folderPath;

watcher.Filter = "*.txt";

watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.FileName | NotifyFilters.DirectoryName;

watcher.Changed += OnChanged;

watcher.Created += OnCreated;

watcher.Deleted += OnDeleted;

watcher.Renamed += OnRenamed;

watcher.EnableRaisingEvents = true;

Console.WriteLine("监视 " + folderPath + "中的 txt 文件,按任意键退出。");

Console.ReadKey();

}

private static void OnChanged(object sender, FileSystemEventArgs e)

{

Console.WriteLine($"{DateTime.Now}:文件 {e.FullPath} 被修改");

}

private static void OnCreated(object sender, FileSystemEventArgs e)

{

Console.WriteLine($"{DateTime.Now}:文件 {e.FullPath} 被创建");

}

private static void OnDeleted(object sender, FileSystemEventArgs e)

{

Console.WriteLine($"{DateTime.Now}:文件 {e.FullPath} 被删除");

}

private static void OnRenamed(object sender, RenamedEventArgs e)

{

Console.WriteLine($"{DateTime.Now}:文件 {e.OldFullPath} 重命名为 {e.FullPath}");

}

}

}

```

在运行程序后,在文件夹中创建修改或删除txt文件,或重命名时,都会触发相应的事件。运行结果如下:

```

监视 C:\Users\username\Desktop\test\ 中的 txt 文件,按任意键退出。

2022/4/4 22:13:43: 文件 C:\Users\username\Desktop\test\test.txt 被创建

2022/4/4 22:13:54: 文件 C:\Users\username\Desktop\test\test.txt 被修改

2022/4/4 22:14:05: 文件 C:\Users\username\Desktop\test\test.txt 被删除

2022/4/4 22:14:25: 文件 C:\Users\username\Desktop\test\测试.txt 重命名为 C:\Users\username\Desktop\test\重命名.txt

```

总结:

FileSystemWatcher是一个非常有用的类,可以用来监视系统文件和目录的变化。使用时必须先创建一个FileSystemWatcher实例,并通过相关属性指定要监视的文件或目录、要监视的更改类型以及要注册的事件。最后,开启FileSystemWatcher并在相应事件中处理指定的操作即可。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(93) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部