Such-Engine im Eigenbau

AnalyseFile

7.4.2010 von Redaktion pcmagazin und Andreas Maslo

ca. 2:25 Min
Ratgeber
  1. Reihe: Such-Engine im Eigenbau für die eigene Homepage - Teil 2
  2. AnalyseFile
  3. Dateien auf Gleichheit prüfen

Entsprechend wird das Ereignis AnalyseFile immer dann ausgelöst, wenn eine neue Datei auf die angegebenen Suchoptionen hin überprüft wird und das Ereignis NewFile, wenn eine geprüfte Datei allen angegebenen Suchoptionen entspricht. Beiden letztgenannten Ereignisprozeduren wird der Dateiname über den Parameter File und das zugehörige Informationsobjekt der Datei vom Typ FileSystemInfo über den Parameter FileInfo übergeben.

Event AnalyseFile(ByVal File As String, _
ByVal FileInfo As FileSystemInfo)
Event NewFile(ByVal File As String, _
ByVal FileInfo As FileSystemInfo)
Diagramm: Hier verfolgen Sie die Suchoptionen und -ereignisse zum benutzerdefinierten Suchobjekt.
© Archiv

Das File, wie die für eine Suche zu berücksichtigenden Dateikürzel, werden im Suchobjekt über die Eigenschaft Suffix verwaltet und bedarfsgerecht bei entsprechender Zuweisung intern korrigiert. Automatisierte Änderungen an der Suffix-Eigenschaft werden über das Ereignis SuffixChanged auch nach außen hin gemeldet.

Der zugeordneten Ereignisprozedur wird das geänderte Suffix als Parameter übergeben: Event SuffixChanged(ByVal Suffix As String). Über das Ereignis EntriesCounter wird die Anzahl der verarbeiteten Dateien und über das Ereignis FoundEntriesCounter die Anzahl der Treffer zurückgeliefert. Um möglichst viele Dateien intern zu verarbeiten, verwenden Sie für die übergebene Zählvariablen Nr den Datentyp Long.

Event EntriesCounter(ByVal Nr As Long)
Event FoundEntriesCounter(ByVal Nr As
Long)

Rekursive Dateisuche starten

Um eine Suche zu beginnen, verfügt das Suchobjekt über die Methode DoSearch. Diese übernimmt das über die Eigenschaft Start-Path gesetzte Startverzeichnis, setzt die Zählvariablen für die verarbeiteten (Entries) und gefundenen Dateien (FoundEntries) zurück und führt dann die verzeichnisorientierte Suche über die untergeordnete Methode DoFileSearch aus.

Der letztgenannten Methode übergeben Sie das Startverzeichnis der Suche per Parameter. Gesonderte Raise-Event-Anweisungen melden Start (SearchBegin) und Ende der Suche (SearchEnd) nach außen.

Sub DoSearch()
Dim sPath As String = Me.StartPath
Entries = 0: FoundEntries = 0
RaiseEvent SearchBegin()
DoFileSearch(StartPath)
RaiseEvent SearchEnd()
End Sub
501 Treffer: Sie sehen die Ausgabe der Ergebnisse im Dialog.
© Archiv

Die Suchfunktion selbst definiert die Methode DoFileSearch. Diese Funktion übernimmt das Ausgangsverzeichnis für die Dateisuche über den Parameter StartPath und ruft sich - sofern erforderlich - selbst rekursiv auf. Alle für das Suchobjekt definierten Eigenschaften berücksichtigen nach Bedarf alle grundlegenden Optionen. Die Methode ist als Private deklariert und entsprechend nicht öffentlich.

Die Suche startet in jedem Fall über die bereits beschriebene Methode DoSearch. Die Methode DoFileSearch legt zunächst eine Objektvariable vom Typ FileSystemInfo für das jeweils aktuell verarbeitete Verzeichnis an und initialisiert dieses. Dieses Objekt stellt untergeordnete Verzeichnisinformationen und -methoden bereit, die über das Ereignis NewPath bei jedem erneuten rekursiven Methodenaufruf veröffentlicht werden.

Nachdem das Startverzeichnis auf Existenz geprüft wurde, werden mit der Methode GetFiles des Objektes Directory zum angegebenen Verzeichnis alle darin enthaltenen Dateien ermittelt und per For-Each-Konstrukt verarbeitet. Die Überprüfung der Suchoptionen verantwortet dabei die Funktion CheckFile. Dieser wird das Startverzeichnis, die jeweils aktuelle Datei sowie ein dateispezifisches Objekt vom Typ FileSystemInfo übergeben.

Die Überwachung der Variablen Cancel gestattet es, die Dateisuche jederzeit zu beenden. Nachdem alle ermittelten Dateien des Verzeichnisses verarbeitet sind, werden - sofern die Eigenschaft AnalyseSubDirectories auf True gesetzt wurde - alle Unterverzeichnisse durchlaufen. Die Unterverzeichnisse selbst errmittelt die Methode GetDirectories des Objektes Directory und verarbeitet diese per For Each-Konstrukt.

Für jedes untergeordnete Verzeichnis wird die Dateisuche durch den rekursiven Aufruf der Methode DoFileSearch unter Angabe des untergeordneten Verzeichnisses fortgesetzt. Auch hier sorgt die Kontrolle der Variablen Cancel mitunter für einen vorzeitigen Abbruch der Suchfunktion. Die Methode ist in der mitgelieferten Klassendatei FileSearchObj.vb (Heft-DVD) enthalten.

Private Sub DoFileSearch
(ByVal StartPath As String)
Dim dInfo As FileSystemInfo =
New DirectoryInfo(StartPath)...

Mehr lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

HTML 5

Webgestaltung

Google Web Designer: Videos einbinden mit HTML5

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…

Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.

Fritzbox, Asus, Belkin und Co.

WLAN-Router vor Hackern schützen - so geht's

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…

Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.

C# und XAML

Windows 8.1 Apps programmieren - so geht's

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC Magazin.

Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1

Programme richtig installieren

Benutzerrechte unter Windows 8.1

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.

Windows 8: Starbildschirm

Microsoft Project Siena

Wie Sie Windows-8-Apps selber erstellen

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…