Programmering

Hvordan jobbe med FileSystemWatcher i C #

FileSystemWatcher-klassen i navneområdet System.IO kan brukes til å overvåke endringer i filsystemet. Den ser på en fil eller en katalog i systemet for endringer og utløser hendelser når endringer oppstår.

For at FileSystemWatcher skal fungere, bør du spesifisere en katalog som må overvåkes. FileSystemWatcher reiser følgende hendelser når det skjer endringer i en katalog som den overvåker.

  • Endret: Denne hendelsen utløses når en fil eller en katalog i banen som overvåkes endres
  • Opprettet: Denne hendelsen utløses når en fil eller en katalog i banen som overvåkes, opprettes
  • Slettet: Denne hendelsen utløses når en fil eller en katalog i banen som overvåkes slettes
  • Feil: Denne hendelsen utløses. Det er en feil på grunn av endringer som er gjort i banen som overvåkes
  • Omdøpt: Denne hendelsen blir utløst når navnet på en fil eller en katalog i banen som overvåkes

Opprette en enkel filsystemvakt i C #

La oss lage et nytt konsollapplikasjonsprosjekt i Visual Studio for å demonstrere hvordan en typisk filsystemvakt fungerer. Merk at en bedre måte å bruke FileSystemWatcher-klassen er å bruke en Windows-tjeneste. Du kan bygge en Windows-tjeneste som bruker FileSystemWatcher-klassen og sender ut varsler når og når det skjer endringer i banen som blir sett på.

Uansett, la oss nå komme inn på litt kode nå. Skriv følgende kode i hovedmetoden til Program.cs-filen.

statisk tomrom Main (streng [] args)

        {

strengsti = @ "D: \";

MonitorDirectory (sti);

Console.ReadKey ();

        }

Følgende kodebit viser hvordan MonitorDirectory-metoden vil se ut. Denne metoden vil bli brukt til å overvåke en bestemt katalog og heve hendelser når en endring inntreffer. Katalogbanen sendes som et argument til metoden.

privat statisk ugyldig MonitorDirectory (strengbane)

        {

FileSystemWatcher fileSystemWatcher = ny FileSystemWatcher ();

fileSystemWatcher.Path = sti;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Legg merke til hvordan hendelsene blir erklært, og at EnableRaisingEvents-egenskapen til filsystemets observatørobjekt er satt til sann for å aktivere heving av hendelser når det skjer en endring på banen som overvåkes. I hovedsak starter dette den faktiske overvåkingen - du informerer FileSystemWatcher om å begynne å overvåke banen og heve passende hendelser fremover.

For hver av hendelsene du har erklært, bør du ha den respektive hendelsesbehandleren som blir utført når hendelsen utløses. Her er kildekoden til hendelsesbehandlerne som vil bli utløst når det skjer en endring i katalogen som overvåkes.

privat statisk ugyldig FileSystemWatcher_Created (objektavsender, FileSystemEventArgs e)

        {

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

        }

privat statisk ugyldig FileSystemWatcher_Renamed (objektavsender, FileSystemEventArgs e)

        {

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

        }

privat statisk ugyldig FileSystemWatcher_Deleted (objektavsender, FileSystemEventArgs e)

        {

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

        }

Her er den komplette kildekoden for din referanse.

bruker System;

bruker System.IO;

navneområdet FileSystemWatcher

{

klasse Program

    {

statisk tomrom Main (streng [] args)

        {

strengsti = @ "D: \";

MonitorDirectory (sti);

Console.ReadKey ();

        }

privat statisk ugyldig MonitorDirectory (strengbane)

        {

FileSystemWatcher fileSystemWatcher = ny FileSystemWatcher ();

fileSystemWatcher.Path = sti;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

privat statisk ugyldig FileSystemWatcher_Created (objektavsender, FileSystemEventArgs e)

        {

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

        }

privat statisk ugyldig FileSystemWatcher_Renamed (objektavsender, FileSystemEventArgs e)

        {

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

        }

privat statisk ugyldig FileSystemWatcher_Deleted (objektavsender, FileSystemEventArgs e)

        {

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

        }

    }

}

Forutsatt at katalogen som heter er tilgjengelig på D: \> -stasjonen til systemet ditt, kjører du konsollapplikasjonen og oppretter deretter en ny fil i katalogen. Du vil merke at navnet på den nylig opprettede filen vises i konsollvinduet. Dette er fordi så snart en ny fil opprettes i katalogen som overvåkes (D: \ i vårt eksempel), blir FileSystemWatcher_Created-hendelsen utløst.

$config[zx-auto] not found$config[zx-overlay] not found