| 

.NET C# Java Javascript Exception

3
C#: Wie der FileSystemWatcher auf Dateienebenee diese überwacht, möchte ich überwachen, ob ein Verzeichnis noch existiert. Falls es umbenannt bzw. gelöscht wird, würde ich dies gerne via Event mitgeteilt bekommen.
Ist dies vielleicht sogar mit dem FileSystemWatcher möglich?
31.03.2011
Gast
33 3
2 Antworten
8
Hallo,

mit diesem Code kannst du den Inhalt eines Ordners überwachen:

Erst einmal brauchst du ein FileSystemWatcher Objekt.
FileSystemWatcher _fileSystemWatcher = new FileSystemWatcher(path);


Dann musst du dem Objekt sagen, auf welche Events er reagieren soll:
_fileSystemWatcher.Changed += WatchedFolderChanged;
_fileSystemWatcher.Deleted += WatchedFolderDeleted;
_fileSystemWatcher.Renamed += WatchedFolderRenamed;


Hiermit kannst du festlegen, wann das Event gefeuert werden soll:
_fileSystemWatcher.NotifyFilter = NotifyFilters.Attributes |
NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.Security |
NotifyFilters.Size;


Dann sagen wir dem Objekt noch, dass er auch tatsächlich auf die Events reagieren soll und die Unterordner ebenfalls überwachen soll.
_fileSystemWatcher.EnableRaisingEvents = true;
_fileSystemWatcher.IncludeSubdirectories = true;


Letzten Endes benötigen wir nur noch die 3 Methoden, die dann die gewünschten Aufgaben erledigen:
private void WatchedFolderChanged(object sender, FileSystemEventArgs e)
{
MessageBox.Show(e.FullPath + " has been changed!");
}

private void WatchedFolderDeleted(object sender, FileSystemEventArgs e)
{
MessageBox.Show(e.FullPath + " has been removed!");
}

private void WatchedFolderRenamed(object sender, RenamedEventArgs e)
{
MessageBox.Show(e.FullPath + " has been renamed!");
}


Damit solltest du nun hinkommen :)

Viel Spaß damit und gutes Gelingen.
Andy
31.03.2011
cruX 803 1 1 9
2
Könnte aber sein das du mit dieser Variante extrem viele Events bekommst. Beim FileSystemWatcher muss man genau aufpassen auf welche Ereignisse man reagiert und muss gut filtern!
phlow666 31.03.2011
1
Das ist richtig. Ich habe hier jetzt alle möglichkeiten aufgelistet. Wenn man den Code verwenden sollte, muss man das auf jeden Fall anpassen. Wie ich es in dem Beispiel gemacht habe, wird das Event bei jeder Kleinigkeit gefeuert.
cruX 31.03.2011
0
Habe es zwar selber noch nicht ausporbiert, aber laut MSDN Dokumentation sehr wohl möglich auch Ordner zu überwachen.

Überwacht die Benachrichtigungen über Änderungen im Dateisystem und löst Ereignisse aus, wenn ein Verzeichnis oder eine Datei in einem Verzeichnis geändert werden

Das Umbenennen, Löschen oder Erstellen von Dateien oder Verzeichnissen kann überwacht werden


Quelle: MSDN
31.03.2011
Jaksa 4,0k 1 8

Stelle deine Struktur-Frage jetzt!