Programiranje

Kako delati z FileSystemWatcher v C #

Razred FileSystemWatcher v imenskem prostoru System.IO lahko uporabite za spremljanje sprememb datotečnega sistema. V datoteki ali imeniku v vašem sistemu spremlja spremembe in sproži dogodke, ko pride do sprememb.

Če želite, da FileSystemWatcher deluje, morate določiti imenik, ki ga je treba nadzirati. FileSystemWatcher sproži naslednje dogodke, ko pride do sprememb v imeniku, ki ga nadzira.

  • Spremenjeno: Ta dogodek se sproži, ko se spremeni datoteka ali imenik na spremljani poti
  • Ustvarjeno: Ta dogodek se sproži, ko se ustvari datoteka ali imenik na poti, ki jo spremljamo
  • Izbrisano: Ta dogodek se sproži, ko izbrišete datoteko ali imenik na poti, ki jo spremljate
  • Napaka: Ta dogodek se sproži. Napaka je posledica sprememb na poti, ki jo spremljamo
  • Preimenovano: Ta dogodek se sproži, ko se datoteka ali imenik na spremljani poti preimenuje

Ustvarjanje preprostega opazovalca datotečnega sistema v jeziku C #

Ustvarimo nov projekt aplikacije za konzolo v Visual Studio, da predstavimo, kako deluje tipičen opazovalec datotečnega sistema. Upoštevajte, da bi bil razred FileSystemWatcher boljši način z uporabo storitve Windows. Lahko zgradite storitev Windows, ki uporablja razred FileSystemWatcher in pošilja obvestila, ko in kadar pride do sprememb na opazovani poti.

Kakorkoli že, pojdimo zdaj v malo kode. V glavno metodo datoteke Program.cs napišite naslednjo kodo.

statična praznina Main (string [] args)

        {

niz poti = @ "D: \";

MonitorDirectory (pot);

Console.ReadKey ();

        }

Naslednji delček kode prikazuje, kako bi izgledala metoda MonitorDirectory. Ta metoda bi se uporabljala za spremljanje določenega imenika in zbiranje dogodkov, kadar koli pride do spremembe. Pot imenika se posreduje kot argument metodi.

zasebna statična void MonitorDirectory (pot niza)

        {

FileSystemWatcher fileSystemWatcher = nov FileSystemWatcher ();

fileSystemWatcher.Path = pot;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Upoštevajte, kako so deklarirani dogodki in da je lastnost EnableRaisingEvents objekta opazovalca datotečnega sistema nastavljena na true, da omogoči zbiranje dogodkov, ko pride do spremembe na poti, ki jo spremljate. V bistvu se s tem začne dejansko spremljanje - FileSystemWatcher obveščate, naj začne spremljati pot in odslej zbira ustrezne dogodke.

Za vsak dogodek, ki ste ga prijavili, bi morali imeti ustrezni obdelovalec dogodkov, ki se izvrši ob sprožitvi dogodka. Tu je izvorna koda upravljavcev dogodkov, ki bi se sprožila, ko in ko pride do spremembe imenika, ki ga spremljamo.

zasebna statična praznina FileSystemWatcher_Created (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka ustvarjena: {0}", e.Name);

        }

zasebna statična praznina FileSystemWatcher_Renamed (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka preimenovana: {0}", e.Name);

        }

zasebna statična praznina FileSystemWatcher_Deleted (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka izbrisana: {0}", e.Name);

        }

Tu je celotna izvorna koda za referenco.

z uporabo sistema;

z uporabo System.IO;

imenski prostor FileSystemWatcher

{

razredni program

    {

statična praznina Main (string [] args)

        {

niz poti = @ "D: \";

MonitorDirectory (pot);

Console.ReadKey ();

        }

zasebna statična void MonitorDirectory (pot niza)

        {

FileSystemWatcher fileSystemWatcher = nov FileSystemWatcher ();

fileSystemWatcher.Path = pot;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

zasebna statična praznina FileSystemWatcher_Created (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka je bila ustvarjena: {0}", e.Name);

        }

zasebna statična praznina FileSystemWatcher_Renamed (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka preimenovana: {0}", e.Name);

        }

zasebna statična praznina FileSystemWatcher_Deleted (pošiljatelj predmeta, FileSystemEventArgs e)

        {

Console.WriteLine ("Datoteka izbrisana: {0}", e.Name);

        }

    }

}

Ob predpostavki, da je imenovani imenik na voljo na pogonu D: \> vašega sistema, zaženite aplikacijo konzole in nato v imeniku ustvarite novo datoteko. Opazili boste, da je ime novo ustvarjene datoteke prikazano v oknu konzole. To je zato, ker se takoj, ko v imeniku, ki ga nadziramo, ustvari nova datoteka (D: \ v našem primeru), sproži dogodek FileSystemWatcher_Created.

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