FileSystemWatcher监视文件变动
模拟一下如何去监视指定的目录的变动。
1、通过Timer来间隔检测文件夹中的变动,主要是对最后时间进行判断。?
2、能否基于系统提供的Api或类库来实现监视
显然,对于第一种方案是很不科学,也很不好把控的。如果用timer那么将会占用过多的资源,同时对于变动不能很明确的定位,在过深层级下的文件变动通过这种方式将很难遍历到,即便能够遍历到则其中的遍历也会增加系统的复杂度。
然而在Net提供的类中有一个System.IO.FileSystemWatcher 通过命名就可以看出其功效——监视者。于是按照自己的思路进行Demo的编写。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileWatch
{
class Program
{
static void Main(string[] args)
{
//用于输入需要监听的路径 例如 c:
string s = Console.ReadLine();
new FileWatchClass(s);
Console.ReadKey();
}
}
class FileWatchClass
{
System.IO.FileSystemWatcher FileWatcher = new FileSystemWatcher ();
public FileWatchClass(string WatcherPath)
{
FileWatcher.Filter = "*.*"; //设定监听的文件类型
FileWatcher.Path = WatcherPath; //设定监听的目录
FileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed); //Changed 事件处理
FileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);//Renamed事件处理
FileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);//Created事件处理
FileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);//Deleted事件处理
FileWatcher.IncludeSubdirectories = true;//设置监听子目录
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileWatch
{
class Program
{
static void Main(string[] args)
{
//用于输入需要监听的路径 例如 c:
string s = Console.ReadLine();
new FileWatchClass(s);
Console.ReadKey();
}
}
class FileWatchClass
{
System.IO.FileSystemWatcher FileWatcher = new FileSystemWatcher ();
public FileWatchClass(string WatcherPath)
{
FileWatcher.Filter = "*.*"; //设定监听的文件类型
FileWatcher.Path = WatcherPath; //设定监听的目录
FileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed); //Changed 事件处理
FileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);//Renamed事件处理
FileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);//Created事件处理
FileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);//Deleted事件处理
FileWatcher.IncludeSubdirectories = true;//设置监听子目录
补充:软件开发 , C# ,