Programavimas

Kaip dirbti su „FileSystemWatcher“ C #

„System.IO“ vardų srityje esančią „FileSystemWatcher“ klasę galima naudoti failų sistemos pokyčiams stebėti. Jis stebi failą ar katalogą jūsų sistemoje, ar jame nėra pakeitimų, ir įvykius suaktyvina įvykus pokyčiams.

Kad „FileSystemWatcher“ veiktų, turėtumėte nurodyti katalogą, kurį reikia stebėti. „FileSystemWatcher“ iškelia šiuos įvykius, kai pasikeičia jo stebimas katalogas.

  • Pakeista: Šis įvykis suaktyvinamas pakeitus stebimo kelio failą ar katalogą
  • Sukurtas: šis įvykis suaktyvinamas, kai sukuriamas stebimo kelio failas ar katalogas
  • Ištrinta: šis įvykis suaktyvinamas, kai ištrinamas stebimo kelio failas ar katalogas
  • Klaida: suaktyvinamas šis įvykis, įvyko klaida dėl stebimo kelio pakeitimų
  • Pervardijamas: Šis įvykis suveikia, kai pervadinamas stebimo kelio failas ar katalogas

Sukurkite paprastą failų sistemos stebėjimo priemonę C #

Sukurkime naują konsolės programos projektą „Visual Studio“, kad pademonstruotume, kaip veikia įprastas failų sistemos stebėtojas. Atminkite, kad geresnis būdas naudoti „FileSystemWatcher“ klasę būtų naudojant „Windows“ paslaugą. Galite sukurti „Windows“ paslaugą, kuri naudoja „FileSystemWatcher“ klasę ir siunčia pranešimus, kai stebimame kelyje pasikeičia.

Bet kokiu atveju, dabar pereikime šiek tiek kodo. Failo „Program.cs“ pagrindiniame metode parašykite šį kodą.

static void Main (string [] args)

        {

eilutės kelias = @ "D: \";

MonitorDirectory (kelias);

Pultas.ReadKey ();

        }

Šis kodo fragmentas parodo, kaip atrodys „MonitorDirectory“ metodas. Šis metodas būtų naudojamas tam tikram katalogui stebėti ir įvykiams pakelti, kai tik įvyksta pakeitimas. Katalogo kelias perduodamas kaip metodo argumentas.

privatus statinis negaliojantis „MonitorDirectory“ (eilutės kelias)

        {

FileSystemWatcher fileSystemWatcher = naujas FileSystemWatcher ();

fileSystemWatcher.Path = kelias;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Atkreipkite dėmesį, kaip deklaruojami įvykiai ir kad failų sistemos stebėjimo objekto ypatybė „EnableRaisingEvents“ nustatyta į „true“, kad būtų galima kelti įvykius, kai stebimas kelias pasikeičia. Iš esmės tai pradeda tikrąjį stebėjimą - jūs informuojate „FileSystemWatcher“, kad jis pradėtų stebėti kelią ir nuo šiol iškeltų atitinkamus įvykius.

Kiekvienam iš jūsų paskelbtų įvykių turite turėti atitinkamą įvykių tvarkytuvą, kuris bus vykdomas suaktyvinus įvykį. Štai įvykių tvarkytuvų šaltinio kodas, kuris bus suaktyvintas pakeitus stebimą katalogą.

privatus statinis negaliojantis FileSystemWatcher_Created (objekto siuntėjas, FileSystemEventArgs e)

        {

„Console.WriteLine“ („Failas sukurtas: {0}“, el. Vardas);

        }

privatus statinis negaliojantis FileSystemWatcher_Renamed (objekto siuntėjas, FileSystemEventArgs e)

        {

„Console.WriteLine“ („Failas pervadintas: {0}“, el. Vardas);

        }

privatus statinis negaliojantis FileSystemWatcher_Deleted (objekto siuntėjas, FileSystemEventArgs e)

        {

Console.WriteLine ("Failas ištrintas: {0}", el. Vardas);

        }

Čia yra visas jūsų šaltinio kodas.

naudojant sistemą;

naudojant System.IO;

vardų sritis FileSystemWatcher

{

klasės programa

    {

static void Main (string [] args)

        {

eilutės kelias = @ "D: \";

MonitorDirectory (kelias);

Pultas.ReadKey ();

        }

privatus statinis negaliojantis „MonitorDirectory“ (eilutės kelias)

        {

FileSystemWatcher fileSystemWatcher = naujas FileSystemWatcher ();

fileSystemWatcher.Path = kelias;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

privatus statinis negaliojantis FileSystemWatcher_Created (objekto siuntėjas, FileSystemEventArgs e)

        {

„Console.WriteLine“ („Failas sukurtas: {0}“, el. Vardas);

        }

privatus statinis negaliojantis FileSystemWatcher_Renamed (objekto siuntėjas, FileSystemEventArgs e)

        {

„Console.WriteLine“ („Failas pervardytas: {0}“, el. Vardas);

        }

private static void „FileSystemWatcher_Deleted“ (objekto siuntėjas, „FileSystemEventArgs e“)

        {

Console.WriteLine ("Failas ištrintas: {0}", el. Vardas);

        }

    }

}

Darant prielaidą, kad pavadintas katalogas yra jūsų sistemos D: \> diske, paleiskite konsolės programą ir tada kataloge sukurkite naują failą. Atkreipkite dėmesį, kad naujai sukurto failo pavadinimas rodomas konsolės lange. Taip yra todėl, kad kai tik stebimame kataloge sukuriamas naujas failas (mūsų pavyzdyje - D: \), suaktyvinamas „FileSystemWatcher_Created“ įvykis.