FileSystemWatcher Folder Rename

D

D2

Hi,

We are using FileSystemWatcher class in a windows service to monitor a
directory "d:\abc". This path is configured in a config file. When the
service is running and FSW is watching this directory, user is able to
open up Windows Explorer and rename d:\abc to d:\xyz.

The problem here is, FSW doesnt fire any event for this hence my
program doesnt know that the monitored folder has been renamed. Next
time the service is started, it reads the path from config file and
exception is thrown as the folder doesnt exist (since d:\abc has been
renamed to d:\xyz). Is there any way by which I can come to know that
the monitored folder has been renamed??

thanks,
dapi
 
J

JimF

Hi dapi,

Actually, the answer is very simple (I just tested it). You need to setup a
SECOND fsw. It will point to the parent of the subdirectory you are
monitoring and you can setup a filter that will be just the name of the
folder to prevent monitoring of other file/folder changes.

FileSystemWatcher fsw;
FileSystemWatcher fswParent;

fsw = new FileSystemWatcher(@"D:\abc");
fsw.Renamed += new RenamedEventHandler(fsw_Renamed);
fswParent = new FileSystemWatcher(@"D:\", "abc");
fswParent.Renamed += new RenamedEventHandler(fswParent_Renamed);
fswParent.EnableRaisingEvents = true;
fsw.EnableRaisingEvents = true;

Good luck,
Jim
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top