Προγραμματισμός

Πώς να εργαστείτε με το FileSystemWatcher στο C #

Η κλάση FileSystemWatcher στο χώρο ονομάτων System.IO μπορεί να χρησιμοποιηθεί για την παρακολούθηση αλλαγών στο σύστημα αρχείων. Παρακολουθεί ένα αρχείο ή έναν κατάλογο στο σύστημά σας για αλλαγές και ενεργοποιεί συμβάντα όταν συμβαίνουν αλλαγές.

Για να λειτουργήσει το FileSystemWatcher, θα πρέπει να καθορίσετε έναν κατάλογο που πρέπει να παρακολουθείται. Το FileSystemWatcher δημιουργεί τα ακόλουθα συμβάντα όταν πραγματοποιούνται αλλαγές σε έναν κατάλογο που παρακολουθεί.

  • Άλλαξε: Αυτό το συμβάν ενεργοποιείται όταν αλλάζει ένα αρχείο ή ένας κατάλογος στη διαδρομή που παρακολουθείται
  • Δημιουργήθηκε: Αυτό το συμβάν ενεργοποιείται όταν δημιουργείται ένα αρχείο ή ένας κατάλογος στη διαδρομή που παρακολουθείται
  • Διαγράφηκε: Αυτό το συμβάν ενεργοποιείται όταν διαγράφεται ένα αρχείο ή ένας κατάλογος στη διαδρομή που παρακολουθείται
  • Σφάλμα: Αυτό το συμβάν ενεργοποιείται και υπάρχει σφάλμα λόγω αλλαγών που πραγματοποιήθηκαν στη διαδρομή που παρακολουθείται
  • Μετονομασία: Αυτό το συμβάν ενεργοποιείται όταν μετονομάζεται ένα αρχείο ή ένας κατάλογος στη διαδρομή που παρακολουθείται

Δημιουργία ενός απλού προγράμματος παρακολούθησης συστήματος αρχείων στο C #

Ας δημιουργήσουμε ένα νέο έργο εφαρμογής κονσόλας στο Visual Studio για να δείξουμε πώς λειτουργεί ένα τυπικό πρόγραμμα παρακολούθησης συστήματος αρχείων. Σημειώστε ότι ένας καλύτερος τρόπος για να χρησιμοποιήσετε την κλάση FileSystemWatcher θα ήταν να χρησιμοποιήσετε μια υπηρεσία Windows. Μπορείτε να δημιουργήσετε μια υπηρεσία Windows που χρησιμοποιεί την κλάση FileSystemWatcher και στέλνει ειδοποιήσεις όταν και όταν συμβαίνουν αλλαγές στη διαδρομή που παρακολουθείτε.

Τέλος πάντων, ας πάμε τώρα σε λίγο κώδικα τώρα. Στην κύρια μέθοδο του αρχείου Program.cs, γράψτε τον ακόλουθο κώδικα.

static void Main (συμβολοσειρά [] args)

        {

string path = @ "D: \";

MonitorDirectory (διαδρομή);

Κονσόλα.ReadKey ();

        }

Το παρακάτω απόσπασμα κώδικα δείχνει πώς θα μοιάζει η μέθοδος MonitorDirectory. Αυτή η μέθοδος θα χρησιμοποιηθεί για την παρακολούθηση ενός συγκεκριμένου καταλόγου και την αύξηση των συμβάντων κάθε φορά που συμβαίνει μια αλλαγή. Η διαδρομή καταλόγου μεταφέρεται ως όρισμα στη μέθοδο.

ιδιωτικό στατικό κενό MonitorDirectory (διαδρομή συμβολοσειράς)

        {

FileSystemWatcher fileSystemWatcher = νέο FileSystemWatcher ();

fileSystemWatcher.Path = διαδρομή;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

Σημειώστε πώς δηλώνονται τα συμβάντα και ότι η ιδιότητα EnableRaisingEvents του αντικειμένου του συστήματος παρακολούθησης έχει ρυθμιστεί σε true για να ενεργοποιεί την αύξηση των συμβάντων όταν συμβαίνει μια αλλαγή στη διαδρομή που παρακολουθείται. Στην ουσία, αυτό ξεκινά την πραγματική παρακολούθηση - ενημερώνετε το FileSystemWatcher για να ξεκινήσετε την παρακολούθηση της διαδρομής και να δημιουργήσετε κατάλληλα συμβάντα στο εξής.

Για κάθε ένα από τα συμβάντα που έχετε δηλώσει, θα πρέπει να έχετε τον αντίστοιχο χειριστή συμβάντων που εκτελείται όταν ενεργοποιείται το συμβάν. Εδώ είναι ο πηγαίος κώδικας των χειριστών συμβάντων που θα ενεργοποιούνται όταν και όταν πραγματοποιείται αλλαγή στον κατάλογο που παρακολουθείται.

ιδιωτικό στατικό κενό FileSystemWatcher_Created (αποστολέας αντικειμένου, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο δημιουργήθηκε: {0}", e.Name);

        }

ιδιωτικό στατικό κενό FileSystemWatcher_Renamed (αντικείμενο αποστολέας, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο μετονομάστηκε: {0}", e.Name);

        }

ιδιωτικό στατικό κενό FileSystemWatcher_Deleted (αντικείμενο αποστολέας, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο διαγράφηκε: {0}", e.Name);

        }

Ακολουθεί ο πλήρης πηγαίος κώδικας για την αναφορά σας.

χρησιμοποιώντας το Σύστημα;

χρησιμοποιώντας το System.IO;

namespace FileSystemWatcher

{

Πρόγραμμα τάξης

    {

static void Main (συμβολοσειρά [] args)

        {

string path = @ "D: \";

MonitorDirectory (διαδρομή);

Κονσόλα.ReadKey ();

        }

ιδιωτικό στατικό κενό MonitorDirectory (διαδρομή συμβολοσειράς)

        {

FileSystemWatcher fileSystemWatcher = νέο FileSystemWatcher ();

fileSystemWatcher.Path = διαδρομή;

fileSystemWatcher.Created + = FileSystemWatcher_Created;

fileSystemWatcher.Renamed + = FileSystemWatcher_Renamed;

fileSystemWatcher.Deleted + = FileSystemWatcher_Deleted;

fileSystemWatcher.EnableRaisingEvents = true;

        }

ιδιωτικό στατικό κενό FileSystemWatcher_Created (αποστολέας αντικειμένου, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο δημιουργήθηκε: {0}", e.Name);

        }

ιδιωτικό στατικό κενό FileSystemWatcher_Renamed (αντικείμενο αποστολέας, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο μετονομάστηκε: {0}", e.Name);

        }

ιδιωτικό στατικό κενό FileSystemWatcher_Deleted (αποστολέας αντικειμένου, FileSystemEventArgs e)

        {

Console.WriteLine ("Το αρχείο διαγράφηκε: {0}", e.Name);

        }

    }

}

Υποθέτοντας ότι ο κατάλογος με το όνομα είναι διαθέσιμος στη μονάδα D: \> του συστήματός σας, εκτελέστε την εφαρμογή κονσόλας και, στη συνέχεια, δημιουργήστε ένα νέο αρχείο στον κατάλογο. Θα παρατηρήσετε ότι το όνομα του αρχείου που δημιουργήθηκε πρόσφατα εμφανίζεται στο παράθυρο της κονσόλας. Αυτό συμβαίνει επειδή μόλις δημιουργηθεί ένα νέο αρχείο στον κατάλογο που παρακολουθεί (D: \ στο παράδειγμά μας), ενεργοποιείται το συμβάν FileSystemWatcher_Created