Programmering

Sådan arbejder du med FileSystemWatcher i C #

FileSystemWatcher-klassen i navneområdet System.IO kan bruges til at overvåge ændringer i filsystemet. Det overvåger en fil eller et bibliotek i dit system for ændringer og udløser begivenheder, når der sker ændringer.

For at FileSystemWatcher skal fungere, skal du angive en mappe, der skal overvåges. FileSystemWatcher rejser følgende begivenheder, når der sker ændringer i en mappe, som den overvåger.

  • Ændret: Denne begivenhed udløses, når en fil eller et bibliotek i den sti, der overvåges, ændres
  • Oprettet: Denne begivenhed udløses, når der oprettes en fil eller et bibliotek i den sti, der overvåges
  • Slettet: Denne begivenhed udløses, når en fil eller et bibliotek i den sti, der overvåges, slettes
  • Fejl: Denne begivenhed udløses, og der er en fejl på grund af ændringer i stien, der overvåges
  • Omdøbt: Denne begivenhed udløses, når en fil eller et bibliotek i den sti, der overvåges, omdøbes

Oprettelse af en simpel filsystemobservator i C #

Lad os oprette et nyt konsolapplikationsprojekt i Visual Studio for at demonstrere, hvordan en typisk filsystemvagt fungerer. Bemærk, at en bedre måde at bruge FileSystemWatcher-klassen er ved at bruge en Windows-tjeneste. Du kan opbygge en Windows-tjeneste, der bruger FileSystemWatcher-klassen og sender meddelelser, når og når der sker ændringer i den sti, der overvåges.

Under alle omstændigheder, lad os nu komme ind på en smule kode nu. Skriv følgende kode i hovedmetoden til Program.cs-filen.

statisk ugyldigt Main (streng [] args)

        {

streng sti = @ "D: \";

MonitorDirectory (sti);

Console.ReadKey ();

        }

Følgende kodestykke viser, hvordan MonitorDirectory-metoden vil se ud. Denne metode vil blive brugt til at overvåge et bestemt bibliotek og rejse begivenheder, når der sker en ændring. Katalogstien videregives som et argument til metoden.

privat statisk ugyldigt MonitorDirectory (strengsti)

        {

FileSystemWatcher fileSystemWatcher = ny FileSystemWatcher ();

fileSystemWatcher.Path = sti;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = sandt;

        }

Bemærk, hvordan begivenhederne erklæres, og at egenskaben EnableRaisingEvents for filsystemovervågningsobjektet er indstillet til sand for at muliggøre hævning af begivenheder, når der sker en ændring på den sti, der overvåges. I det væsentlige starter dette den faktiske overvågning - du informerer FileSystemWatcher om at begynde at overvåge stien og hæve passende begivenheder fremover.

For hver af de begivenheder, som du har deklareret, skal du have den respektive begivenhedshåndterer, der udføres, når begivenheden udløses. Her er kildekoden til hændelseshåndtererne, der ville blive udløst, når og når der sker en ændring i det bibliotek, der overvåges.

privat statisk ugyldigt FileSystemWatcher_Created (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil oprettet: {0}", e.Name);

        }

privat statisk ugyldigt FileSystemWatcher_Renamed (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil omdøbt: {0}", e.Name);

        }

privat statisk ugyldigt FileSystemWatcher_Deleted (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil slettet: {0}", e.Name);

        }

Her er den komplette kildekode til din reference.

ved hjælp af System;

ved hjælp af System.IO;

navneområde FileSystemWatcher

{

klasse Program

    {

statisk ugyldigt Main (streng [] args)

        {

streng sti = @ "D: \";

MonitorDirectory (sti);

Console.ReadKey ();

        }

privat statisk ugyldigt MonitorDirectory (strengsti)

        {

FileSystemWatcher fileSystemWatcher = ny FileSystemWatcher ();

fileSystemWatcher.Path = sti;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = sandt;

        }

privat statisk ugyldigt FileSystemWatcher_Created (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil oprettet: {0}", e.Name);

        }

privat statisk ugyldigt FileSystemWatcher_Renamed (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil omdøbt: {0}", e.Name);

        }

privat statisk ugyldigt FileSystemWatcher_Deleted (objektafsender, FileSystemEventArgs e)

        {

Console.WriteLine ("Fil slettet: {0}", e.Name);

        }

    }

}

Forudsat at den navngivne mappe er tilgængelig på D: \> -drevet i dit system, skal du køre konsolapplikationen og derefter oprette en ny fil i biblioteket. Du vil bemærke, at navnet på den nyoprettede fil vises i konsolvinduet. Dette skyldes, at så snart en ny fil oprettes i den mappe, der overvåges (D: \ i vores eksempel), udløses FileSystemWatcher_Created-begivenheden.