FileSystemWatcher Folder Rename

  • Thread starter Thread starter D2
  • Start date Start date
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
 
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
 
Back
Top