Such-Engine im Eigenbau
AnalyseFile
- Reihe: Such-Engine im Eigenbau für die eigene Homepage - Teil 2
- AnalyseFile
- 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)

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

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)...
Gutscheine
-
Uber Eats
5€ mit dem Uber Eats Gutschein sparen Zum Gutschein
bis 30.09.2023+ bis zu 2,50€ Cashback -
eufy
Exklusiver 15% eufy Gutschein auf ALLES Zum Gutschein
bis 01.10.2023+ bis zu 8,0% Cashback(statt40,0€) -
Berliner Kaffeerösterei
Exklusiver 10% Gutschein Code auf ALLES Zum Gutschein
bis 08.10.2023+ bis zu 8,0% Cashback(statt25,0€) -
Geero
EXKLUSIV: 6% Gutschein auf alle Geero2 Modelle Zum Gutschein
bis 27.09.2023+ bis zu 3,0% Cashback(statt15,0€) -
FARFETCH
30% FARFETCH Rabattcode Zum Gutschein
bis 25.09.2023 -
HelloFresh
Bis zu 120€ + GRATIS Versand der 1. Box mit den HelloFresh Rabattcodes Zum Gutschein
bis 31.01.2024+ bis zu 4,00€ Cashback