Click here to Skip to main content
15,886,001 members
Articles / Programming Languages / C#
Article

File/Folder Watcher Wrapper

Rate me:
Please Sign up or sign in to vote.
3.33/5 (21 votes)
22 Mar 20041 min read 103.2K   1.1K   57   13
Easy implmentation of folder watcher class, by wrapping the logic and events.

Introduction

So you want to watch a folder for file changes? So, why not use the built in .NET file watcher class? It's extremely easy to use and implement. Only one problem: every time you need this functionality, you tend to write all the code all over again. So I thought: why not wrap the file watcher functionality and then just reuse the wrapper class.

Design of the Wrapper Class

The wrapper class contains all that is needed to watch a folder for changes:

  • it monitors changes / deletion / addition / renaming of files & folders
  • a filter can be supplied to only monitor a certain group of files, e.g.: *.txt.
  • you can start or stop the watcher on command.

The watcher also wraps the events fired by the .NET file watcher and fires a single event for all different types of file changes. This event uses the event arguments class: FileWatcherEventArgs. This class contains the filename, path, old filename (for renaming), old path (for renaming) and a change type. The change type is useful for monitoring what type of change occurred. It is an enum:

C#
public enum fileWatcherChangeType
{
fileAdded,
fileDeleted,
fileRenamed,
filechanged
}

How to use the code

It's very easy. Add the file FileWatcher.cs to your project. Add the code "using Utils;" and that's it! Here is an example of some form code of how to use the class:

C#
private void button1_Click(object sender, System.EventArgs e)
{
  Utils.FileWatcher fw = new Utils.FileWatcher(@"c:\test");
  fw.StartWatcher();

  fw.Changed += new Utils.FileWatcher.ChangedEventHandler(showChange);
}

private void showChange(object source, Utils.FileWatcherEventArgs e)
{
  MessageBox.Show(e.ChangeType.ToString() + " " + e.FileName);
}

There is also a public method destroyWatcher which stops the current file watcher.

Conclusion

That's it! Very basic and easy to implement. Enjoy

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
South Africa South Africa
I am a software developer at CoreBiz - a small but growing software developement house in the sleepy hollow of Pietermaritzburg in South Africa, specialising in custom software development for all businesses

Comments and Discussions

 
Generalorey Pin
harsha_gns12-Apr-10 1:45
harsha_gns12-Apr-10 1:45 
QuestionCan this be used in a thread Pin
Steve Messer12-Dec-05 7:11
Steve Messer12-Dec-05 7:11 
AnswerRe: Can this be used in a thread Pin
Bhavesh Shah20-Dec-05 22:24
Bhavesh Shah20-Dec-05 22:24 
GeneralRe: Can this be used in a thread Pin
Steve Messer21-Dec-05 2:10
Steve Messer21-Dec-05 2:10 
GeneralRe: Can this be used in a thread Pin
ibless12-Nov-07 8:47
ibless12-Nov-07 8:47 
GeneralRe: Can this be used in a thread Pin
ibless12-Nov-07 8:51
ibless12-Nov-07 8:51 
GeneralDouble event firing Pin
Kevin Alexandre18-Jul-04 12:35
Kevin Alexandre18-Jul-04 12:35 
GeneralRe: Double event firing Pin
Sidhartha Shenoy26-Sep-05 20:47
Sidhartha Shenoy26-Sep-05 20:47 
GeneralRe: Double event firing Pin
Bhavesh Shah20-Dec-05 22:22
Bhavesh Shah20-Dec-05 22:22 
GeneralRe: Double event firing Pin
Sidhartha Shenoy21-Dec-05 1:19
Sidhartha Shenoy21-Dec-05 1:19 
GeneralRe: Double event firing Pin
Bhavesh Shah21-Dec-05 1:33
Bhavesh Shah21-Dec-05 1:33 
GeneralI want watch a file Pin
lonelywind19824-Jul-04 0:00
lonelywind19824-Jul-04 0:00 
GeneralRe: I want watch a file Pin
Spicket23-Nov-05 6:34
Spicket23-Nov-05 6:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.