Programmēšana

Kā strādāt ar FileSystemWatcher C #

FileSystemWatcher klasi System.IO vārdu telpā var izmantot, lai uzraudzītu failu sistēmas izmaiņas. Tas vēro, vai failā vai direktorijā jūsu sistēmā notiek izmaiņas, un notiek notikumi, kad notiek izmaiņas.

Lai FileSystemWatcher darbotos, jums jānorāda direktorijs, kas jāuzrauga. FileSystemWatcher izsauc šādus notikumus, kad notiek izmaiņas direktorijā, kuru tā pārrauga.

  • Mainīts: Šis notikums tiek aktivizēts, kad tiek mainīts fails vai direktorijs uzraugāmajā ceļā
  • Izveidots: Šis notikums tiek aktivizēts, kad tiek izveidots fails vai direktorijs uzraugāmajā ceļā
  • Dzēsts: Šis notikums tiek aktivizēts, kad tiek dzēsts fails vai direktorijs uzraugāmajā ceļā
  • Kļūda: Šis notikums tiek aktivizēts. Kļūda rodas izmaiņu dēļ, kas veiktas uzraudzītajā ceļā
  • Pārdēvēts: Šis notikums tiek aktivizēts, kad tiek pārdēvēts fails vai direktorijs uzraugāmajā ceļā

Vienkāršas failu sistēmas novērotāja izveide C #

Izveidosim jaunu konsoles lietojumprogrammas projektu Visual Studio, lai parādītu, kā darbojas tipisks failu sistēmas vērotājs. Ņemiet vērā, ka labāks veids, kā izmantot klasi FileSystemWatcher, būtu Windows pakalpojuma izmantošana. Varat izveidot Windows pakalpojumu, kas izmanto FileSystemWatcher klasi un izsūta paziņojumus, kad maināmā ceļā notiek izmaiņas.

Jebkurā gadījumā tagad pievērsīsimies nedaudz kodam. Faila Program.cs galvenajā metodē ierakstiet šādu kodu.

static void Main (virkne [] args)

        {

virknes ceļš = @ "D: \";

MonitorDirectory (ceļš);

Console.ReadKey ();

        }

Šis koda fragments parāda, kā izskatās MonitorDirectory metode. Šo metodi izmantos, lai uzraudzītu noteiktu direktoriju un paaugstinātu notikumus ikreiz, kad notiek izmaiņas. Kataloga ceļš tiek nodots kā arguments metodei.

private static void MonitorDirectory (virknes ceļš)

        {

FileSystemWatcher fileSystemWatcher = jauns FileSystemWatcher ();

fileSystemWatcher.Path = ceļš;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Ņemiet vērā, kā tiek deklarēti notikumi un faila sistēmas vērotāja objekta rekvizīts EnableRaisingEvents ir iestatīts uz true, lai iespējotu notikumu paaugstināšanu, kad notiek novērojamā ceļa izmaiņas. Būtībā tas sāk faktisko uzraudzību - jūs informējat FileSystemWatcher, lai tas sāktu uzraudzīt ceļu un izvirzītu attiecīgus notikumus.

Katram jūsu deklarētajam notikumam ir jābūt attiecīgajam notikumu apstrādātājam, kas tiek izpildīts, kad notikums tiek aktivizēts. Šeit ir notikumu apstrādātāju avota kods, kas tiks aktivizēts brīdī, kad notiek izmaiņas uzraudzītajā direktorijā.

private static void FileSystemWatcher_Created (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails izveidots: {0}", e.NAME);

        }

private static void FileSystemWatcher_Renamed (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails pārdēvēts: {0}", e.Vārds);

        }

private static void FileSystemWatcher_Deleted (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails izdzēsts: {0}", e.NAME);

        }

Šeit ir pilns jūsu atsauces avota kods.

izmantojot sistēmu;

izmantojot System.IO;

nosaukumvieta FileSystemWatcher

{

klases programma

    {

static void Main (virkne [] args)

        {

virknes ceļš = @ "D: \";

MonitorDirectory (ceļš);

Console.ReadKey ();

        }

private static void MonitorDirectory (virknes ceļš)

        {

FileSystemWatcher fileSystemWatcher = jauns FileSystemWatcher ();

fileSystemWatcher.Path = ceļš;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

private static void FileSystemWatcher_Created (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails izveidots: {0}", e.NAME);

        }

private static void FileSystemWatcher_Renamed (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails pārdēvēts: {0}", e.Vārds);

        }

private static void FileSystemWatcher_Deleted (objekta sūtītājs, FileSystemEventArgs e)

        {

Console.WriteLine ("Fails izdzēsts: {0}", e.NAME);

        }

    }

}

Pieņemot, ka nosauktais direktorijs ir pieejams jūsu sistēmas D: \> diskā, palaidiet konsoles lietojumprogrammu un pēc tam direktorijā izveidojiet jaunu failu. Jūs ievērosiet, ka jaunizveidotā faila nosaukums tiek parādīts konsoles logā. Tas notiek tāpēc, ka, tiklīdz novērojamā direktorijā ir izveidots jauns fails (mūsu piemērā D: \), tiek aktivizēts FileSystemWatcher_Created notikums.

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