Ohjelmointi

Kuinka työskennellä FileSystemWatcherin kanssa C #: ssä

System.IO-nimiavaruuden FileSystemWatcher-luokkaa voidaan käyttää tiedostojärjestelmän muutosten seuraamiseen. Se seuraa järjestelmän tiedostoa tai hakemistoa muutosten varalta ja laukaisee tapahtumia muutosten tapahtuessa.

Jotta FileSystemWatcher toimisi, sinun on määritettävä hakemisto, jota on valvottava. FileSystemWatcher herättää seuraavat tapahtumat, kun sen valvomassa hakemistossa tapahtuu muutoksia.

  • Muutettu: Tämä tapahtuma laukaistaan, kun seurattavan polun tiedostoa tai hakemistoa muutetaan
  • Luotu: Tämä tapahtuma laukaistaan, kun seurattavan polun tiedosto tai hakemisto luodaan
  • Poistettu: Tämä tapahtuma laukaistaan, kun seurattavan polun tiedosto tai hakemisto poistetaan
  • Virhe: Tämä tapahtuma laukaistaan, virhe on seurausta seurattavassa polussa tehdyistä muutoksista
  • Nimeä uudelleen: Tämä tapahtuma laukaistaan, kun seurattavan polun tiedosto tai hakemisto nimetään uudelleen

Yksinkertaisen tiedostojärjestelmän tarkkailijan luominen C #: ssä

Luodaan uusi konsolisovellusprojekti Visual Studiossa osoittamaan, kuinka tyypillinen tiedostojärjestelmän tarkkailija toimii. Huomaa, että parempi tapa käyttää FileSystemWatcher-luokkaa olisi käyttää Windows-palvelua. Voit rakentaa Windows-palvelun, joka käyttää FileSystemWatcher-luokkaa ja lähettää ilmoituksia, kun katsomassa polussa tapahtuu muutoksia.

Joka tapauksessa, nyt päästään vähän koodiin nyt. Kirjoita seuraava koodi Program.cs-tiedoston päämenetelmään.

staattinen void Main (merkkijono [] args)

        {

merkkijonopolku = @ "D: \";

MonitorDirectory (polku);

Console.ReadKey ();

        }

Seuraava koodinpätkä näyttää miltä MonitorDirectory-menetelmä näyttää. Tätä menetelmää käytetään tietyn hakemiston seuraamiseen ja tapahtumien nostamiseen aina, kun muutos tapahtuu. Hakemistopolku välitetään argumenttina menetelmälle.

yksityinen staattinen void MonitorDirectory (merkkijonopolku)

        {

FileSystemWatcher fileSystemWatcher = uusi FileSystemWatcher ();

fileSystemWatcher.Path = polku;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Huomaa, miten tapahtumat ilmoitetaan ja että tiedostojärjestelmän tarkkailijaobjektin EnableRaisingEvents-ominaisuus on asetettu arvoon true, jotta tapahtumien nostaminen voidaan sallia, kun seurattavan polun muutos tapahtuu. Pohjimmiltaan tämä aloittaa varsinaisen valvonnan - ilmoitat FileSystemWatcherille, että se alkaa seurata polkua ja nostaa sopivia tapahtumia tästä lähtien.

Jokaisella ilmoittamallasi tapahtumalla sinulla on oltava vastaava tapahtumankäsittelijä, joka suoritetaan tapahtuman laukaistuessa. Tässä on tapahtumankäsittelijöiden lähdekoodi, joka laukaistaan, kun muutos seurattavaan hakemistoon tapahtuu.

private static void FileSystemWatcher_Created (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto luotu: {0}", e.Nimi);

        }

private static void FileSystemWatcher_Renamed (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto nimetty uudelleen: {0}", e.Nimi);

        }

private static void FileSystemWatcher_Deleted (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto poistettu: {0}", e.Nimi);

        }

Tässä on täydellinen lähdekoodi viitteellesi.

käyttämällä järjestelmää;

käyttämällä System.IO: ta;

nimitila FileSystemWatcher

{

luokan ohjelma

    {

staattinen void Main (merkkijono [] args)

        {

merkkijonopolku = @ "D: \";

MonitorDirectory (polku);

Console.ReadKey ();

        }

yksityinen staattinen void MonitorDirectory (merkkijonopolku)

        {

FileSystemWatcher fileSystemWatcher = uusi FileSystemWatcher ();

fileSystemWatcher.Path = polku;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

private static void FileSystemWatcher_Created (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto luotu: {0}", e.Nimi);

        }

private static void FileSystemWatcher_Renamed (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto nimetty uudelleen: {0}", e.Nimi);

        }

private static void FileSystemWatcher_Deleted (objektin lähettäjä, FileSystemEventArgs e)

        {

Console.WriteLine ("Tiedosto poistettu: {0}", e.Nimi);

        }

    }

}

Jos oletetaan, että nimetty hakemisto on käytettävissä järjestelmän D-asemassa, suorita konsolisovellus ja luo sitten uusi tiedosto hakemistoon. Huomaa, että vasta luodun tiedoston nimi näkyy konsoli-ikkunassa. Tämä johtuu siitä, että heti kun uusi tiedosto luodaan valvottavaan hakemistoon (esimerkissämme D: \), FileSystemWatcher_Created-tapahtuma laukaistaan.

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